Блог asci

Регистрация

Календарь

<< Январь 2012  

Пн Вт Ср Чт Пт Сб Вс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

Теги

cms  css  derby  fail  firefox 4  html  javascript  jquery  rails  tiny mce  верстка  внешний вид  загрузка  идея  интернет  киев  нервы  переживаю  печать  планы  покупки  полезняшки  полиграфия  провайдеры  работа  реализация  стартап  сумка 

На странице

RSS - подписка

Заметки

Тут как бы смесь блокнота, заметок и трибуны

Случайная строка заданной длины Javascript


var randomHash = (function () {
var letters = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
return function (len) {
var result = '';
for (var i=0; i < len; i++) {
result += letters[Math.floor(Math.random() * letters.length)];
};
return result;
};
})();

Теги: полезняшки|javascript

Новое тест-задание и планы

Случайно наткнулся на вакансию в Луганске, буду пробовать — дали тест-задание. Сроки нормальные, 2 недели, однако надо все сделать по-быстрому и качественно. С другой стороны, интересно, сколько в Луганске программистов на руби…

Следующие планы на обучение — изучить API таких сервисов как Facebook, Twitter, Vkontakte и возможно, какой-нибудь платежной системы. Так же неплохо было бы продолжить учить jQuery, как раз в тестовое задание и встрою его.

Пара деньков командировки впереди, значит будет время пописать код и почитать мануалы. Надеюсь все успею.

Теги: rails|планы|cms|работа

Непрокатило

Работа по рейлс мне пока не позубам. Надо еще учиться и учиться и мб через пару месяцев буду начинающим гуру:D

А пока читать и писать CMS, такие планы.

Ах да, вторым тестовым заданием было сделать модель сообщений как в фейсбуке, но… Я думаю это просто для проформы было)

Теги: fail|переживаю|rails|планы|киев|работа

Тестовое задание

Вчера проходил тестовое задание, которое звучало примерно так:
Сделать книгу контактов, где у каждого контакта есть неопределенное количество полей информации, и которые можно динамически добавлять при создании\редактировании контакта.

Время — 4 часа.

Теги: jquery|переживаю|rails|реализация|cms|киев|работа

Tiny MCE и Rails 3

Как прицепить замечательный визуальный редактор к приложению на рельсах. Это довольно просто, хотя и сложнее простой установки гема.
Я использовал эту статью, вольный перевод которой и хочу вам предложить.

Итак, для того что бы начать использовать этот замечательный редактор его нужно сначала скачать. Я дал ссылку на прямое скачивание версии для jQuery, который используется в моих проектах.

Далее надо создать каталог «public/javascripts/tiny_mce» в него скопировать содержимое архива из каталога «jscripts/tiny_mce», то есть в итоге у вас должны оказаться каталоги «langs», «plugins» и «themes» в каталоге «public/javascripts/tiny_mce».

Теперь создайте новый файл «public/javascripts/mce_editor.js» и поместите в него инициализирующий код Tiny MCE:

tinyMCE.init({
        // General options
        mode : "textareas",
        theme : "advanced",
        plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

        // Theme options
        theme_advanced_buttons1 : "save,newdocument,|,cut,copy,paste,pastetext,pasteword,|,search,replace,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull",//,|,styleselect,formatselect,fontselect,fontsizeselect",
        theme_advanced_buttons2 : ",bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
//        theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
//        theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : true,

        // Skin options
        skin : "o2k7",
        skin_variant : "silver",

        // Example content CSS (should be your site CSS)
        content_css : "css/example.css",

        // Drop lists for link/image/media/template dialogs
        template_external_list_url : "js/template_list.js",
        external_link_list_url : "js/link_list.js",
        external_image_list_url : "js/image_list.js",
        media_external_list_url : "js/media_list.js",

        // Replace values for the template plugin
        template_replace_values : {
                username : "Some User",
                staffid : "991234"
        }
});


Собственно этот файл является так же файлом настройки Tiny MCE, и разобраться в нем довольно просто.

Теперь откройте файл "app/helpers/application_helper.rb" и добавьте в него следующие методы:
def use_tinymce
    @content_for_tinymce = ""
    content_for :tinymce do
      javascript_include_tag "tiny_mce/tiny_mce"
    end
    @content_for_tinymce_init = ""
    content_for :tinymce_init do
      javascript_include_tag "mce_editor"
    end
end


Как я уже говорил, я использовал jQuery в проекте, он ставиться простым гемом jquery-rails поэтому у меня код в макете несколько отличается от оригинальной статьи.
Измените макет "layouts/application.html.erb" таким образом:

  < %= javascript_include_tag :defaults % >
  < %= yield :tinymce % >
  < %= yield :tinymce_init % >
 

Так, теперь для того, что бы вывести редактор на экран нужно перед текстовым полем написать строчку:
 < % use_tinymce —% >
А к хелпертегу добавить класс «mce-editor»:
  < %= textarea_tag :foo, :bar, :class = > «mce-editor» % >
Вот и все. Теперь, что бы использовать Tiny MCE в месте вывода текста используйте метод raw, например:
< %= raw(post.content) % >

Теги: tiny mce|rails|реализация|верстка|cms

Новая неделя

Новые планы, новые задачи и обязанности.
На той неделе меня типа повысили, навешав на меня кучу обязанностей по организации работы отдела сервиса. Работа, собственно, не связанная с компьютерами, однако пообещали денег дополнительно. Теперь отрабатывать схему новой работы буду.

Наконец-то закончился период активной разработки рекламных материалов и я опять могу погрузиться в руби и сайт.

Вчера купил одежды новой, ну или почти новой)) Клевую рубашку, бурячного и черного цвета футболки, и пару джинс, одни такие летние расхлобузные, а вторые строгие темные… В общем клево.

Сегодня надо уточнить вопрос с поездкой в Киев… Ой как надо.

Теги: переживаю|внешний вид|киев|покупки|работа

Проект

Та-дам, гроза и у половины города не работает интернет. Собственно, что бы понять халатность и параною провайдеров есть идея для «стартапа».
У многих сейчас кроме основного и широкого интернет канала есть маленький и узенький мобильный канал. Вот тут то и можно получать жалобы от пользователей.
Выбираем провайдера, благо их не так много, имя пользователя (это вроде как не конфиденциальная информация), наличие и работу локальной сети, тип подключения, именованный адрес и период неработающего интернета. Заявка по умолчанию считается активной 2 дня, после этого статус перемещается в исправленные. После этого можно составить графики надежности провайдеров.

Теги: fail|провайдеры|rails|стартап|интернет|идея

Связанные таблицы на примере тегов

Изучая пока что основы rails 3 я столкнулся с вопросом реализации тегов. Более фундаментально он звучал для меня так:
Как делать связанные таблицы многие к многим.
Итак. Пускай будут две модели post и tag которые мы или сгенерировали скаффолдом.

rails g scaffold post title:string content:text
rails g scaffold tag value:string

И пока не делаем миграцию.
Соответственно у постов могут быть теги, однако мы так же хотим получать через теги посты которые их имеют. Вот к чему надо привести модели постов и тегов:


class Post < ActiveRecord::Base
    has_and_belongs_to_many :tags
end

class Tag < ActiveRecord::Base
    has_and_belongs_to_many :posts
end


Затем надо создать связывающую таблицу. Для этого надо сгенерировать миграцию такого вида:
rails g migration posts_tags
Это создаст валидную пустую миграцию. По умолчанию rails будет искать связи именно в этой таблице, причем последовательность названия полей должна быть по алфавиту.
После создания файла миграции, его нужно немного подправить, а именно привести миграцию к такому виду:

class PostsTags < ActiveRecord::Migration
  def self.up
    create_table :posts_tags, :id= >false do |t|
        t.integer :post_id
        t.integer :tag_id
    end
  end

  def self.down
    drop_table :posts_tags
  end
end


После этого запускаем миграцию командой

rake db:migrate

Теперь мы можем обращаться двусторонне как post.tags так и tag.posts. Однако, при создании новых тегов для поста они заново создаются и в таблице tags, что нам категорически не нужно. Для того, что бы исправить это, при создании тега проверяем, есть ли он уже в базе при помощи
Tag.where(«value = ?», tag)
и если есть, то добавляем найденный тег к тегам поста, в другом случае создаем тег

Теги: rails|реализация|cms

Программа минимум для kuzmina.com.ua

Итак, для того, что бы потренироваться в использовании рельсов я решил перевести на динамический движок сайт kuzmina.com.ua и буду использовать для него самописную CMS.
Основные вехи, которые я собираюсь реализовать:
Авторизация и администрирование
Админ-панель
Редактирование страниц
Сохранение черновиков
Загрузка файлов
Динамические и статические страницы (лента постов)
Генерация галерей на rails
Просмотрщик галерей на jquery
Комментирование фотографий с помощью виджета комментариев ВКонтакте
Интеграция с Facebook
Кнопки с Facebook и Twitter
Форма обратной связи
Акцент на продажу услуг
Акцент на свежие фотографии и комментарии, для создания видимости обновления сайта

2375645

Теги: rails|html|верстка|cms|идея

Как загружать файлы в Rails 3

Я поглядел замечательный скринкаст по этому поводу, но тем кто не знает английского, приведу свои действия:

Для начала поставим новый джем файл 'carrierwave', который отвечает за загрузку файлов. Для этого надо добавить в Gemfile строчку
gem 'carrierwave'

А затем выполнить команду
bundle install

Кстати, если вы встраиваете в разрабатываемый до этого проект и что то не заработает, попробуйте обновить пакеты командой:
bundle update


Вы поставили джем и в нем есть генератор, который и решит большинство задач по загрузке файлов. Я не буду описывать все достоинства этого джема, но он очень хорош.
Итак, что бы мы могли им пользоваться и настроить его напишите команду
rails g uploader image

В данном случае image это то, что нужно было загружать мне
Эта команда создаст файл в директории app/uploads, открыв который вы увидете закомментированные настройки. Там все просто и при желании вы можете поизменять их, однако я оставил их по умолчанию.

Далее, мне нужно привязать к какой-то модели загружаемый файл. У меня уже была модель с задачами, и я решил добавить новую миграцию, в которой к таблице с задачами добавил новое поле... Напишите в командной строке:
rails g migration add_image_to_tasks image:string

А затем выполните миграцию:
rake db:migrate

После успешной миграции надо прицепить загрузчик к модели, открываем файл app/models/task.rb

и добавляем туда строчку:
mount_uploader :image, ImageUploader

первое это фунция прицепления, второе - к какому полю прицепляемся и третье - какой зарузчик используем (мы его делали с помощью генератора uploader)

Далее переходим к виду. В нужном месте вставляем хелпертег:
<  %= f.file_field :image%  >

Это при условии что вы используете форму со стандартного скаффолда. Кроме того, необходимо в хелпертэг формы добавить следущий хэш:
:html = > {:multipart = >true}

Теперь по кнопке "Отправить" на сервер будет загружаться выбранный файл.

Что бы получить этот файл, используем метод image_url для модели Task
Например:
<  %= image_tag task.image_url.to_s %  >

Теги: rails|загрузка|верстка

Пятница Десятого

Вчера сходил в трензал, сеня такая приятная усталость в мышцах, обидно что пропустил несколько занятий. Надо будет еще гейнер купить, чтоб массу набирать быстрее и на пресс налягать, чтоб кубики играли:D

А сегодня стартую по задачу переделке листовок, думаю за пару дней справлюсь.

И еще, вроде бы в Киев в начале июля поеду, а потом может быть и перееду туда… Так вот связанные мысли: в Киеве больше вакансий и всяких ивентов, надо усиленно учить рельсы и джейквери, поучавствовать в синерджи, если получится, хотя бы для того, что бы понимать работу в коллективе, попробовать дашин сайт перенести на рельсы с админкой и редактированием. В общем идей много, и все они помогут мне найти хорошую работу в Киеве:D

Теги: переживаю|rails|киев|идея|работа

Купил сумку

Отличную сумку купил в дерби за 200 грн, как раз нетбук помещается, тормозок на работу и еще чуток итемов:D
Старая сумка была куплена за 18 грн на распродаже, и прослужила мне 2 года, посмотрим на что способна эта

Теги: derby|сумка|внешний вид|покупки

CSS для таблиц 2

Это всего лишь идея, однако удобно
Итак, в html файл добавляем таблицу, и пишем тег
<  table class="supert"  >
        < tbody >
        < tr >
            < th >Заголовок< /th >
        < /tr >
        < tr >
            < td >Содержимое< /td >
        < /tr >
        < tr >
            < td >Содержимое< /td >
        < /tr >
        < /tbody >
< /table >


В основной css файл добавляем строчку
@import url("supert.css");


И собственно сам файл supert.css, который лежит в каталоге с основным css:
.supert *{
    font-family:"Arial";
    font-size:10pt;
}

.supert td {
    text-aligh:left;
    padding-left:5px;
}

.supert th {
    background-color:#ccc;
    text-aligh:center;
    font-weight:bold;   
}

.supert {
    border-collapse:collapse;
    width:100%;
}

.supert table, td, th {
    border:1px solid #000;
    padding:2px;
}


Теги: html|верстка|css|идея

CSS для таблиц

Пришла идея сделать универсальный СSS для таблиц.
Идея в следущем:
Делаем класс, для дива, и в него пихаем таблицу, а css файлом уже марафетим внутренние теги этого класса. Подключаем отдельно.

Кароче все закончилось блясдством с фаерфоксом, который не хочет мне рисовать границы таблиц при border-collapse:collapse

Теги: firefox 4|fail|css

Одобрил пруфы

Я одобрил пруфы, хоть там и были некоторые недаработки. Буду надеятся что для печати пруфы с большим dpi.

Нервиничаю и переживаю, но пока только чуть-чуть, а вот когда распаковывать буду…
Каталоги, по цене порядка 10 000 грн, 2000 экз. И если что-то будет не так, мне прийдется ооочень не сладко.

Теги: переживаю|печать|полиграфия|нервы

О пруфах

Жду пруфы с полиграфии, такие пдвки который последний рубеж перед печатью. Прислали ссылку — она ведет вникуда, сервер не настроен нормально, замутил в файлзилле — зашло.

Скачал пруфы, там два файла тока в папке было, а они не мои:D
Всякие шоколадные конфеты и сладкие спокусы.

В общем жду

Теги: fail