Показаны сообщения с ярлыком rails. Показать все сообщения
Показаны сообщения с ярлыком rails. Показать все сообщения

воскресенье, июля 19, 2009

19 years old

День рождения у меня вчера, был. Что можно сказать? Первый день девятнадцатилетия (сложное слово) ничем особо не отличался от предыдущих трехсот шестидесяти пяти (это тоже сложное) дней.. Хотя...

Встретился с другом, поел там, где всегда хотел поесть (grill master), выпил то, что всегда интриговало (махито, безалкогольный) - это вроде бы уже необычно. Получил классный подарок в виде подушки с нарисованным сурком и надписью "Don't Repeat Yourself" - тоже очень здорово. Потом мама уговорила меня сходить в магазин, купили майку, желтую, буду на пары ходить в ней; а затем я поехал покупать себе подарок из своего вишлиста (http://www.wishlistr.com/cypok/), то есть первое что там было - велоочки. Сначала меня очень разочаровал велосипед, задний переключатель вообще не работал, а велокомп утверждал что я на месте стою, блин. Очень понравились очки в Твоей Стихии, с тремя линзами (темно-красными, желто-оранжевыми и прозрачными) для разной погоды - полезная вещь, купил. Хотел еще посмотреть гидраторы, но их в Триале не оказалось, кончились. Велокомп чудом починился, переклюк с горем попалам выполнял свои обязанности, на бордюры запрыгивалось легко - это хорошо. Приехал домой довольный.

Мама делала пиццу, я ее ел, потом отвечал всем вконтакте на поздравления, потом приехал папа с волейбола - и мы с ним смотрели Бумер-2. Параллельно я убивался об дебильную багу в ttt, в итоге что-то переписав, что-то удалив, оно заработало, еще полчасика и практически все тесты проходят - тоже хорошо.

Что мы имеем? Мне 19 лет, я студент третьего курса кафедры АФТИ, увлекающийся программированием и самыми разными видами езды на велосипеде и сноуборде, не верящий в бога и альтруизм, у меня есть хороший друг и много приятелей. Все хорошо, живем дальше.

суббота, апреля 04, 2009

BDD rocks! Cucumber rocks!

Далеко не все понимают, что тестирование является необходимостью для любых проектов, будь то калькулятор на Mix'е или веб-форум с древовидной архитектурой. Но это правда необходимо, ибо программа, не имеющая тестов - просто код, никто не может гарантировать ее работу в разных случаях, при разных действиях пользователя.

Студенты обычно тестируют так: написали функцию суммирования, проверили, что работает "2+2" - все! А потом оказывается, что на "3+0" она падает, а через некоторое время (когда что-то в коде менялось) вообще перестает даже "2+2" складывать. Человек не может после каждой модификации кода проверить все предельные и стандартные поведения программы - это просто очень трудоемко.

Но есть решение! Мы создаем тесты, которые будут проверять работу каждой функции в отдельности - в нашем примере это проверка, что "2+2=4" и "3+0=3". И каждый раз, мы запускаем тесты и убеждаемся, что все по прежнему работает.
Так же возможно мы придумаем, как улучшить алгоритм работы нашей функции, и тогда мы просто перепишем функцию и запустим тесты - если все OK, то мы молодцы, иначе откатываемся к предыдущей версии и думаем над улучшением работоспособности нового, более хорошего алгоритма.

Теперь поговорим о реализации этих тестов.. Ведь mix'овый калькулятор я бы рад протестировать, но абсолютно нет средств и инструментов для этого. С современными языками и фреймворками дела обстоят гораздо лучше: есть очень много этих самых средств и инструментов. Приведу пример лучших для Ruby (субъективное мнение):
  • rspec - BDD фреймворк, весьма удобен, вот пример
    Как можно увидеть, код вполне читаем на родном english'е, мы тестируем наш список в разных ситуациях и ожидаем определенного поведения.
    Этот фреймворк мне нравится больше всего именно для тестирования разных функции, моделей
  • cucumber - и опять фреймворк, девиз которого "BDD with elegance and joy". Это просто супер - вот вам нравится идея написания тестов на русском языке. Мне - очень!
    Это пример комплексного тестирования форума. Вы подумаете, что тут где-то обман (!), как система догадывается, что я имею ввиду? Ведь ИИ еще не доведен до юзабельного состояния :( Да, есть дополнительные расходы, которые заключаются в объявлении пары правил для обработки выражений специфичных для форумов, но это всего 10 строчек с регулярными выражениями, зато что мы получаем взамен!
    Тест пишется за несколько минут, даже меньше, и он очень удобен для демонстрации людям, не знакомым с программированием, например, дизайнерам и заказчикам!
Тесты писать надо, главное выбрать правильный инструмент, чтобы это доставляло удовольствие - иначе вам это надоест!

пятница, марта 20, 2009

Опять то, опять сё..

И опять я прогаю, и все еще катаюсь на сноуборде, и по прежнему хорошо учусь.

Но есть в каждом разделе интересные моменты...

  • Прогаю я теперь "по науке": так как щас довольно напряженный семестр в плане учебы, то на все остальное времени не хватает вечером, поэтому придумали... Вот такой план по написанию сайта группы (который за месяц учебы с места не сдвинулся): мы с Ваней ("партнер") обязуемся прогать хоть по чуть-чуть каждый день, вне зависимости от количества дел. Эта схема уже приносит плоды, так как за три дня мы уже написали (оценим сверху..) половину форума! С сегодняшнего дня еще обязуюсь уделять часть времени bookez (потому что на него времени ну совсем не хватает).
  • И да, я на протяжении месяца катаюсь на сноуборде каждые выходные! Это офигенно круто, в связи с этим уже купил шлем, очки и даже штаны хорошие - думаю, что обязательно продолжу в следующем сезоне.
  • Учусь на самом деле не так хорошо, как хотелось бы. Да, со всеми мат.дисциплинами у меня все хорошо, лучше не бывает. А вот с лабами по оптике и с теми же семинарами - все-таки не физик я, но будем бороться - прямо сейчас я оформляю месячное задание по оптике.. :)

пятница, февраля 20, 2009

Целую неделю учусь, или пытаюсь учиться

Что за фигня?.. На что я вообще трачу свое время?... За первую половину недели я не сделал ровным счетом ничего полезного, вообще: ни месячных заданий, ни bookez не писал. Это, я считаю, плохо. Да, я переустановил себе полностью систему (кстати поставил Vist'у, туда поставил две программы: msvc и kde-windows), да, я прокачал себе плазмоиды до очень высокого уровня, да, я прочитал КУЧУ полезных статей про ruby, git, linux и т.д. - наверное это хорошо и в своем роде полезно, но почему я занимаюсь больше этими "побочными" делами? У меня же есть цель, написать bookez и получать удовольствие от того, что его будут использовать... А я тут фигней страдаю, полезной, но все же фигней (на будущее: надо будет подумать, насколько это фигня)... Даже в блог, мой блог, приоритет которого довольно высок, и то, я не успеваю в него написать, потому что занят чем-то другим... Странно все это.
Пробовал весь день учиться, а вечером попрогать - в целом получилось, сделал кучу домашек, но когда у меня начался ужин, совмещенный с отдыхом, опять началось "это" - и я занимался написанием тупых ruby-скриптов в место полезных вещей до самой ночи.

Так. Я торжественно даю себе обещание: если я за выходные
  • не перепишу bookez на authlogic
  • не перенесу его же на ruby 2.3 rc
  • не добавлю на embplay.ru систему авторизации (с возможностью позволять добавлять вышивки не только администратору)
то я буду очень зол на себя. Надо быть все-таки ответственнее...

вторник, февраля 03, 2009

base_russian_app_with_auth

Вот писал я маме сайт на rails, сначала прикручивал туда аутентификацию (authlogic), а потом russian - дополнение к модулю I18n, который был представлен в Rails2.2, для улечшенного перевода на русский язык (там кстати уже переведены все стандартные ошибки)... Сейчас хочу начать еще один проектик - и надо опять делать тоже самое... Бе... Тут я решил, что эти две основы очень часто используются, и решил создать простое приложение на русском, с аутентификацией и авторизацией, которое потом я буду использовать для всех своих будущих приложений на Rails - base_russian_app_with_auth! Вот так вот, если кому-нибудь это пригодится кроме меня - будет здорово! :)

воскресенье, января 11, 2009

Промежуточный итог

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

Приступим.

  1. Mix-Machine - ассемблер и виртуальная машина (кстати в блоге много сообщений насчет этого проекта)
    Написан на Python, gui на Qt4.
    Описание со скриншотами тут, код с тестами можно посмотреть тут.
    Этой вещью я реально горжусь, ибо это большой и полезный проект, который писался 2 месяца, в тоже время обладающий колоссальной интеллектуальной массой.
    Планируется использовать во втором семестре у первокурсников.

  2. 737@NSU - сайт нашей группы. (сейчас основная разработка ведется Ваней Новиковым)
    Написан на чистом php без использования фреймворков + mysql.
    Собственно вот 737.at.NSU.ru
    Эта вещь реально работает и действует, особенность в том, что ВСЕ написано своими руками.
    Аудитория - вся наша группа.

  3. PlotIt! - графико-построитель (проект первого семестра)
    Python опять же, gui на PC - библиотека Tcl/Tk, на Symbian - его родной API.
    Имеется возможность задавать свои функции и константы, рисовать графики в декартовых и полярных координатах, рисовать параметрически заданные функции и многое другое. Можно еще загружать скрипты и сохранять картинки в файлы (кажется png). Причем все это работает на компах (win, linux, mac) и на телефонах под управлением Symbian 8,9. (для отрисовки используются два написанных враппера).
    Скриншоты
    Пользователь даже есть постоянный - Ваня, ибо его не устравивает то, что Maple долго грузится.

  4. Parallel Solving - библиотека для параллельных вычислений (проект второго семестра)
    Написана на C, использовались лишь библиотеки winsock для сокетов - у линукс они аналогичны, т.е. гипотетически легко перенести на линукс и маки.
    Так, ну это библиотека, которая значительно упрощает "распараллеливание" программ. В качестве примера был написан решатель судоку (примерный алгоритм): то есть программа-сервер посылала части судоку клиентам, каждый решал свою часть и отсылал ответ обратно серверу, причем все это работает через сокеты - то есть поддерживается и сетевой режим. Зачем же нужна библиотека - она брала на себя все операции по синхронизации, соединению сервера и клиента, добавлению и получению ответов на подзадачи.
    Это был первый опыт написания прикладной библиотеки.

  5. OOPacMan - реализация классической игры (проект третьего семестра, выполнен в духе ООП и парного программирования вместе с Ваней).
    Написан на C++, консольный, кросплатформенный.
    Исходники pacman'а и mds'а.
    Используется написанная нами же MDS - Message Driven System - то есть система позволяющая хранить набор объектов, с реализованным функциями отправки сообщений между ними. На основе этого сделано все внутриигровое взаимодействие. Много прикольных фич. Много сил было вложено в кроссплатформенность.
    Увлекательная и красивая игрушка получилась.

  6. Все что связано с Rails...
    Читать раньше в блоге.

  7. Был также опыт олимпиадного программирования
    Есть Сертификат участника Поттосинской командной олимпиады и какая-то грамота с внутренней личной олимпиады НГУ.
    Не зацепило, больше не учавствую, ибо считаю не сильно полезной тратой времени.

четверг, января 08, 2009

Сайт блока и о web'е вообще

Предисловие. Как вы можете прочитать ранее, летом я занималься написанием MixMachine (виртуальная машина такая) с Олегом Дашевским. Это закончилось тем, что в середине сентября она была написана с довольно-таки большим количеством реализованного функционала, оставались мелкие вещи, но их оставили (если будут реальные пользователи программы, то все будет доведено до идеала).

Вступление. Потом меня направили на изучение языка ruby, написав одну учебную программку мы подошли к главному, ради чего все это начиналось - Ruby on Rails.

О главном. RoR - это такой, ну наверное можно сказать фреймворк, для разработки web-приложений. Он позволяет легко, изящно и красиво писать довольно-таки сложные вещи. Если интересно - посмотрите примеры на просторах интернета, а пока поверьте наслово... :) И вот мы с Олегом втроем (к нам в начале года присоединилась одногруппница моя - Арина Нешляева) начали писать сайт - bookez.

О bookez. Задумывался он как портал для обмена книгами, то есть если тебе очень нужна редкая книга и она есть у пользователей сайта (и он не против поделится) - то здесь ты сможешь прочитать отзовы и поинтересоваться о возможности взять ее. В частности похожая ситуация обстоит с новыми книгами по программированию, которые либо не найдешь, либо очень дорогие.. А так мне ее могут дать почитать на недельку.
Этот проект сейчас еще развивается, есть основа: возможность регистрироваться и создавать новые книги - сейчас надо прописывать именно все взаимоотнешия между пользователями..

О будущем. Это меня зацепило, мне понравился и руби, и рельсы (ruby on rails - просто "рельсы"), там мало того меня заинтересовал интеренет не просто как ресурс, но и как машина, которая всегда работает, заинтересовало потом и как именно она работает. На данный момент я уже купил себе домен cypok.info, сейчас в совсем скором времени появится еще и хостинг, тогда начну воплощать идеи личные - блог (может будет просто редирект на blogspot), учет моих расходов (на компе неудобно - не мобильно) и некотрые другие ресурсы..

p.s. А еще мы тут как-то подумали, что нам нужен сайт моего блока - то есть сервис исключительно для трех человек с графиками дежурства, форумом для флуда и многое другое! :)