Pull to refresh
21
0
Ermak @Ermak

User

Send message

Evernote API или Что внутри слона?

Reading time6 min
Views14K
В комментариях к нашим предыдущим записям в блоге на Хабре мы упомянули о том, что Evernote имеет собственный API. Сейчас я хочу рассказать о нем подробнее.


Когда мы только разрабатывали протокол синхронизации для Evernote, мы хотели добиться кроссплатформенности решения (веб-часть написана на Java, клиент для Windows и Windows Mobile — на C++, клиенты для Mac и iPhone на Objective C). Нужно было что-то, что позволит легко имплементировать этот протокол на разных клиентах и позволять расширять этот протокол по необходимости. Помимо этого, нам хотелось обеспечить передачу бинарных данных по данному протоколу, дабы уменьшить объем передаваемых данных. Выбор пал на Thrift, протокол, использовавшийся (и до сих пор использующийся) в Facebook, а ныне ставший опенсорсным проектом под крылом Apache Incubator. Разрабочики Evernote даже приложили свою руку к развитию проекта, исправляя ошибки и дорабатывая Java, Objective C и Perl-реализациии Thrift.
Читать дальше →

Обзор системной архитектуры социальной сети Campus.ru

Reading time11 min
Views19K
Представляю Вашему вниманию обзор высокоуровневой системной архитектуры социальной сети www.campus.ru, разработки компании ООО «Креатив Медиа». На мой взгляд, данный материал интересен тем, что позволяет оценить применимость рассмотренных подходов и технологий в разработке интернет-ресурсов. По крайней мере, когда наша компания начинала проект «Кампус», мне очень не хватало подобной информации.
Дальше очень много букв

Parse it!

Reading time4 min
Views7.8K
Какое-то время назад мне по работе пришлось провести небольшое исследование. Суть его состояла в поиске наилучшего pdf-парсера реализованного на java.

Немного о проекте. В нем реализована система пересылки внутренних сообщений, к которым могут быть прикреплены файлы. Также есть поиск, который должен осуществляться по содержимому аттачментов. Большую часть подобных аттачментов составляют pdf-ки.
Собственно работа механизма довольно проста: при отсылке сообщения данные аттачмента парсятся и по ним стороится индекс.

Долгое время документы парсились при помощи библиотеки PDFBOX, работа которой не вызвала ни у кого радости: долго и со сбоями.
В итоге были выбраны 4 библиотеки, сравнением которых я занялся: PDFBOX, JPod, iText и Acrobat.
Читать дальше →

Икра. День первый

Reading time1 min
Views563
Итак, мы начали наш курс ИКРа.
В воскресный день мы собрались без опозданий в стенах Международного института рекламы. За окном было солнечно и ясно.
На воскресном уроке мы знакомились со студентами. На курсе учится 10 человек, которые через 4 месяца получат дипломы и статус продюсера интерактивных проектов.

У нас также идет трансляция уроков в LiveJournal и мы будем выкладывать работы студентов. Немного попозже всем будут доступны видеоматериалы и фото с лекций.

В первый день мы презентовали курс и агентство Red Keds, как хедлайнера и разработчика программы. В этой презентации собраны слайды по которым в первый день велись лекции.

Презентация Урок 1
Презентация Red Keds

В этот же день выступал Илья Петров (копирайтер) с вводной лекцией про органы чувств и восприятие. Лекция была посвящена объяснению как работают органы чувств человека и какие существуют методы воздействия на них. Илья показал как это можно использовать в рекламе.

Технологии ранжирования Google

Reading time6 min
Views724
Амит Сингал (Amit Singhal), руководитель команды ранжирования Google
В своем предыдущем посте я рассказал вам о принципах ранжирования Google. В рамках нашего обсуждения качества поиска я бы хотел рассказать вам о технологиях, используемых при ранжировании результатов поиска Google. Наши базовые технологии используют достижения академической дисциплины, которая называется «Информационный поиск» (по-английски «Information Retrieval» или сокращенно IR). Ученые занимаются поиском уже почти 50 лет. При этом при ранжировании веб-страниц используются статистические сигналы значимости слов, такие как частота употребления. (См. статью «Современный информационный поиск. Краткий обзор»). Информационный поиск дал нам прочный фундамент, на котором мы построили передовую систему, использующую анализ гиперссылок, структуры страниц, а также много других инновационных разработок.

В последнее десятилетие возможности поиска существенно расширились. Если раньше поиск отвечал на вопрос «найдите мне то, что я сказал», то теперь он отвечает на вопрос «найдите мне то, что я хочу». Ожидания пользователей в отношении поиска также сильно выросли. Мы усердно работаем над тем, чтобы оправдать ожидания всех и каждого. Для этого мы должны лучше понимать страницы, запросы и самих пользователей. В течение последних 10 лет мы смогли достичь принципиально новых высот в развитии технологий, позволяющих понять все эти три составляющие поискового процесса.

Когда мы в Google обсуждаем запросы, мы обычно заключаем текст запроса в квадратные скобки [ ] (см. статью Мата Катса "Как писать запросы"). В этом посте я буду обозначать запросы именно так. Страницы и результаты поиска меняются постоянно, поэтому с течением времени некоторые примеры могут отображаться иначе.

Понимаем страницы. В течение многих лет мы вкладывали усилия в развитие нашего поискового робота и системы индексирования. В итоге сейчас мы имеем очень большой и актуальный индекс веб-страниц. Помимо увеличения размеров индекса и повышения его актуальности, мы добились еще некоторых улучшений. Одна из наших наиболее важных технологий для понимания веб-страниц — это определение понятий, важных в контексте страницы, даже если связь со страницей неочевидна. Мы находим официальную домашнюю страницу Государственного Эрмитажа в Санкт-Петербурге на запрос на итальянском [Museo dell'Ermitage di San Pietroburgo], даже если на официальной странице не упоминается ни Санкт-Петербург, ни San Pietroburgo. Если американский пользователь ищет [cool tech pc vancouver, wa ], то ему выдается страница www.cooltechpc.com, несмотря на то, что на странице нигде не упоминается город Ванкувер (штат Вашингтон, США). Также мы разработали технологии, которые умеют отличать важные и неважные для конкретной страницы слова, а также учитывать, насколько свежая информация размещена на странице.

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

Практически все пользователи сталкивались с нашей системой проверки орфографии. Эта система знает, что если пользователь ввел в поисковую строку [пояск в гуле], то скорее всего ему нужна информация о поиске в Google. В таком случае выводится сообщение: Возможно, вы имели в виду: поиск в гугле. Если же пользователь набрал [пояск кожаный], система понимает, что он ищет кожаный пояс. Осуществлять такой анализ одновременно на нескольких языках чрезвычайно сложно, но Google успешно с этим справляется.

Подбор синонимов является ключевым аспектом понимания запросов. Это одна из самых трудных задач, которыми мы занимаемся в Google. Несмотря на то, что подбор синонимов зачастую очевиден для человека, в области автоматической обработки текстов эта проблема еще не решена. Как пользователю мне не хотелось бы слишком задумываться над тем, какие именно слова использовать в своих запросах. Часто мне вообще неизвестно, какие слова лучше выбрать. В таких случаях в дело вступает наша система подбора синонимов, которая способна выполнять сложнейшие модификации запросов. Например, она знает, что в запросе [ДР Аллы Пугачевой] сочетание ДР означает день рождения, а в запросе [ДР Рим] – слово древний. Когда пользователь ищет [логический философский трактат Витгенштейна], он получает результаты, относящиеся к «Логико-философскому трактату» Людвига Витгенштейна, а по запросу [реляционные БД] система автоматически находит информацию о реляционных базах данных. Мы добились такого уровня понимания запросов почти для ста различных языков, что является для меня предметом особой гордости.

Еще одна технология, которую мы используем в нашей системе ранжирования результатов, это определение понятий, интересующих пользователя. Она позволяет значительно повысить релевантность поиска. Например, наши алгоритмы понимают, что по запросу [Казанова певица] пользователю необходима информация о певице Сати Казановой, а не об известном ловеласе XVIII века Джакомо Казанове. Но мы не останавливаемся на идентификации, мы обогащаем результаты поиска адекватными концепциями. Например, если пользователь ищет информацию о [влиянии компьютера на человека], то ему хочется узнать не столько о том, как компьютер влияет на мировосприятие человека, сколько о его воздействии на здоровье и психику. Или если пользователь вводит [институт Баумана], то его интересует Московский Государственный Технический Университет имени Баумана. В наши алгоритмы анализа запросов встроено множество подобных разработок, и, как я уже говорил, мы умеем анализировать запросы практически на всех языках, которые поддерживает Google.

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

В нашей работе по локализации мы реализуем наш базовый принцип — наилучшее качество результатов поиска с учетом местной специфики в любой точке земного шара. Один и тот же запрос, набранный пользователями в различных странах, может давать абсолютно разные результаты. Например, если пользователь в США ищет [bank], он должен получить информацию об американских банках. А если то же самое слово ищет пользователь в Великобритании, то он, скорее всего, ищет либо производителя модной одежды и обуви «Bank Fashion», либо информацию о британских финансовых институтах. Аналогичный запрос должен выводить местные финансовые институты в таких странах, как Австралия, Канада, Новая Зеландия, Южная Африка. Забавные вещи начинаются, когда тот же самый запрос вводят в Египте, Израиле, России, Саудовской Аравии, Швейцарии или Японии. Аналогично запрос [football] относится к абсолютно разным видам спорта в Австралии, Великобритании и США. В этих примерах мы показали, как мы умеем правильно отображать локализованные версии одного и того же понятия (финансовые институты, виды спорта и т.д.). Однако один и тот же запрос может означать совсем разные вещи для пользователей в разных странах. Например, [Côte d'Or] – это географический регион во Франции. Но в соседней Бельгии – это крупный производитель шоколадных изделий. И мы умеем правильно понимать этот запрос.

Персонализация – это еще одна мощная возможность нашей системы поиска. Мы умеем адаптировать результаты поиска к потребностям конкретных пользователей. Пользователи, которые вошли в Google под своей учетной записью и подписались на сервис «История веб-поиска», имеют возможность получать результаты, которые лучше отвечают их запросам, чем общий поиск Google. Например, если человек, которого интересует железнодорожная тематика, вводит [локомотив], то он получит больше информации о локомотиве как транспортном средстве. Другие же пользователи получат, в первую очередь, информацию о футбольном клубе «Локомотив». Точно так же, если вы предпочитаете страницы конкретного интернет-магазина, то при поиске товаров вы получите больше результатов именно со страниц этого магазина. Как показывают наши опросы, пользователи считают, что персонализованный поиск дает более качественные результаты, чем неперсонализованный.

Еще один пример того, как мы предугадываем желания пользователя – это запрос [chevrolet magnum] На самом деле Magnum производит Dodge, а не Chevrolet, поэтому в выдаче мы также предлагаем результаты для [dodge magnum ].

Наш Универсальный поиск – еще один пример того, как мы умеем правильно понимать пользователей и выдавать именно те результаты, которые им действительно нужны. Например, на запрос [стокгольм] пользователь получает не только важные веб-страницы о шведской столице, но и карту города, и картинки с его видами. Сейчас мы также показываем свежие новости о Стокгольме.

Я мог бы продолжать бесконечно долго, приводя примеры наших технологий, обуславливающих передовой уровень системы ранжирования Google. Однако мы прекрасно осознаем, что поиск информации не является окончательно решенной проблемой. На многие запросы мы пока не умеем выдавать удовлетворительные результаты, и каждый из таких запросов – это возможность улучшить нашу систему ранжирования. Я уверен, что те многочисленные технологии, которые сейчас разрабатывает наша команда, позволят нам в самом ближайшем будущем достичь существенного повышения качества нашего поиска.

Я надеюсь, что два моих поста о ранжировании Google позволили вам убедиться в том, что мы в Google живем и дышим поиском, и наша страстная увлеченность им сегодня сильна как никогда. Мы гордимся тем, что у нас очень хорошая система ранжирования, и мы невероятно много работаем изо дня в день, чтобы она становилась еще лучше.

Введение в gen_server: «Erlybank»

Reading time8 min
Views13K
Предыстория
Введение в Open Telecom Platform/Открытую Телекомуникационную Платформу(OTP/ОТП)

Это первая статья из цикла статей, описывающих все концепции, которые относятся к Erlang/OTP. Чтобы вы могли найти все эти статьи в дальнейшем, они маркируются специальным тегом: Otp introduction(здесь я сделал ссылку на теги хабра). Как обещано во введении в OTP, мы будем создавать сервер, обслуживающий фейковые банковские аккаунты людей в «Erlybank» (да, я люблю глупые имена).

Сценарий: ErlyBank начинает свою деятельность, и руководителям необходимо встать с правильной ноги, создав масштабируемую систему для управления банковскими аккаунтами их важной базы покупателей. Услышав про мощь Erlang, они наняли нас сделать это! Но чтобы посмотреть, на что мы годны, они сначала хотят увидеть простенький сервер, умеющий создавать и удалять аккаунты, делать депозит и изъятие денег. Заказчики хотят только прототип, а не что-то, что они смогут запустить в производство.

Цель: мы создадим простой сервер и клиент, используя gen_server. Так как это просто прототип, аккаунты будут храниться в памяти и идентифицироваться по имени. Никакой другой информации для создания аккаунта будет не нужно. И конечно же, мы сделаем проверку для операций депозита и изъятия денег.

Примечание: я полагаю, что у вас уже есть начальные знания синтаксиса Erlang. Если нет, то рекомендую прочитать краткое резюме по ресурсам для начинающих, чтобы найти тот ресурс, где вы сможете изучить Erlang.

Если вы готовы, жмите «Читать дальше», чтобы начать! (Если вы уже не читаете всю статью целиком:) )

Читать дальше →

Простой цифровой термометр своими руками

Reading time3 min
Views173K
Наткнулся недавно в интернете на интересный материал, идея заинтересовала, но после сборки отказалась корректно работать, погуглив дальше наткнулся на другой вариант, который и представляю.

Простой цифровой термометр с подключением через COM-порт.


Читать дальше →

Архитектура CMS. Модель данных. Часть 3

Reading time10 min
Views2.2K
В предыдущей статье на примере создания объектной модели простого сайта производились одиночные загрузки сущностей из базы данных по их идентификаторам конструкцией Object::Create($id), при этом мы знали, у какой сущности (чаще всего класса), какой идентификатор, так как сами создавали эти сущности и в крайнем случаи могли просто заглянуть в базу данных. На практике загружать сущности по идентификатору проблематично, если нас интересуют сущности, о существовании которых можно только догадываться, то есть, не имея информации об их идентификаторах. Более того существует необходимость загружать несколько сущностей разом, отвечающих некоторым условиям.

В магазине, например, мы не выбираем товар по его серийному номеру или штрих-коду, не зная при этом, что он означает – мы смотрим на свойства товара интересующие нас. На главной странице сайта, опять же для примера, необходимо выводить последние новости, что сводится к выборке из базы данных (объектной модели данных) 10 объектов класса «Новость» с сортировкой по дате их создания. Для осуществления подобных запросов необходим гибкий способ описания условий выборки сущностей – условий поиска с учетом особенностей объектной модели. На основе условия необходимо создавать SQL код для непосредственной выборки из БД идентификаторов сущностей удовлетворяющих условию, имеем идентификаторы – имеем сущности.
Читать дальше →

Система управления задачами opentodo

Reading time1 min
Views6.3K
Приветствую!

Решил поделиться с сообществом своим проектом.
opentodo — система управления задачами, написанная на языке Python (Django Framework).

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

Особенности

  • Простой, удобный интерфейс в стиле Gmail
  • Добавление задач, назначение ответственных и сроков выполнения
  • Возможность прикреплять файлы к задачам и проектам — скриншоты, документацию и т.п.
  • Жизненный цикл задач: Новая, Принята, Завершена, Одобрена
  • Цветовое кодирование задач в зависимости от статуса
  • Комментарии к задачам
  • E-mail уведомления
  • Управление пользователями с помощью стандартной панели администрирования Django
  • Разграничение доступа пользователей к проектам

Онлайн демо


Посмотреть в работе можно здесь: demo.opentodo.ru

Где скачать и как установить


Архив для загрузки и инструкция по установке доступны на странице проекта на Google Code:
code.google.com/p/opentodo

Исходный код под управлением системы контроля версий на сайте GitHub:
github.com/mgrigoriev/opentodo

Условия распространения: GNU General Public License v3.

Надеюсь, мой скромный проект для кого-то окажется полезным и поможет в организации работы :)

P.S. Спасибо участникам дискуссионной гугл-группы django russian, а также всем, кто прокомментировал пост на design.leprosorium.ru, за отзывы и ценные советы по улучшению opentodo.

UPD: убедительная просьба — полегче в демо! Анонимность не оправдывает вандализм :)

«Правильный водитель». Дневник проекта. Часть1.

Reading time2 min
Views596
О том, как родилась идея проекта «Правильный водитель», я писал в предыдущем посте. Сейчас я хочу шаг за шагом рассказать, как идея воплощалась в жизнь. Это будет, своего рода дневник развития проекта, в котором я расскажу как я делал, что именно и зачем.

А также об экспериментах над проектом. И мы вместе будем смотреть что из этих затей будет получаться. Надеюсь, это «лайв-шоу» будет интересно и познавательно. Итак…

Читать дальше →

Создание gsmrozetka.ru

Reading time4 min
Views5.7K
Кратенько о нас. Мы — это компактный коллектив разработчиков. Пишем на чем угодно, паяем все, что можно припаять. Своя собственная, небольшая лаборатория для проведения адских экспериментов.
Достаточное количество друзей-знакомых-клиентов, поддерживающих нас. И ставящих перед
нами различные задачи. Иногда эти задачи порождают, кроме основного продукта, еще и побочный.

Сегодня я расскажу не о основном, а о как раз случайно созданном нами продукте. Родился он
благодаря такой цепочке:

Удаленны съем статистики со спец-техники (делали и сделали)->
Шуточки про дистанционное управление 50-тонным тралом (хотим, но пока времени нет )->
Возвращение на землю с мыслью, что это же прикольно -по-управлять чем-нибудь ->
Знакомый, с его постоянными поездками на дачу и включением обогревателя, чтобы что-то
там не промерзло и не прорвало. Товарищ хотел простенькую железку. Чтобы воткнул ее и
все заработало. Чтобы, не выезжая на дачу, он мог включить-выключить свой котел.

Навскидку. У нас был удлинитель. Был сотовый телефон.
Image and video hosting by TinyPic

А хотелось что-то типа вот такого:
Image and video hosting by TinyPic

Ну, или, как вариант, на самый крайний случай — вот такого:
Image and video hosting by TinyPic

Читать дальше →

Сложная задачка про узников

Reading time1 min
Views3.7K
Рассказали мне недавно супер-задачу, потребовалось несколько дней чтобы решить.

Есть бесконечно много узников (счётное число), пронумерованных натуральными числами. Каждый узник знает все номера, в том числе свой. Узники умеют бесконечно быстро думать, и у них бесконечно много памяти. Сначала у них есть время на обсуждение алгоритма.
Их выстраивают по порядку, так что первый смотрит в спину второго, второй в спину третьего и т.д. На них одновременно надевают колпаки двух цветов. Каждый узник видит, какие колпаки надеты на узниках с большими номерами (первый видит все колпаки, кроме своего, второй — все, кроме своего и первого и т.д.). Никакой информацией они уже не обмениваются. Дальше каждый из них должен одновременно со всеми сказать, какой на нём колпак. Кто не угадает — того расстреливают. Как сделать так, чтобы лишь конечное число узников расстреляли?

PS Не хватает кармы, чтобы переместить в блог «Занимательные задачки». Спасибо за карму, перенёс в блог «Занимательные задачки».

UPD Решение в комментах.

Управление командой: простые истины

Reading time3 min
Views1.8K
Друзья!

Состоялся второй семинар для стартапщиков от проекта Egenius.ru. Тему обсуждали следующую: «Управление командой стартапа». Сразу хочу извиниться за срыв онлайн-трансляции. На площадке отрубился интернет. Но все-таки было много интересного. Дима Браверман (SmartContext) давал практические советы, Юра Синодов рассказывал, как он запускал стартап Roem.ru в офисе «класса G» в компании с программистом-бездельником и помощником программиста — юным алкоголиком. Видеозапись семинара и презентации докладчиков можно посмотреть/скачать здесь
А также мне показались весьма полезными советы Дмитрия по управлению командой, посему я решила ими поделиться с общественностью.
Итак,

Про сроки:

* Определяя сроки проекта, время, необходимое для решения задачи, которое Вам назвал программист, умножайте на 2. То, что говорит дизайнер – на 3.
* Если задача требует слишком много времени для решения, подумайте, нельзя ли от этой задачи отказаться.
* Даже если Вам в голову пришла гениальная идея — не спешите ее реализовывать. Сначала просчитайте, каких именно ресурсов потребует ее решение, а затем впишите в план следующего релиза проекта

Читать дальше →

Лучшие стартапы февраля

Reading time6 min
Views1K
10 лучших стартапов февраля
Последний месяц зимы принес много различных стартапов. Среди них есть и новый проект на нашумевшем домене top4top.ru, и агрегатор контекстной рекламы, над которым поработали Ашманов и Лебедев, и тренажер, который замерит ваше умение стучать по клавишам и даже сертифкат выдаст, и многое другое.
Кроме того, это последний рейтинг в таком формате. Начиная с Марта месяца стартапы по местам расставлять буду не я, а Вы. Подробнее читайте в анонсе на сайте стартаппоинта.
Читать дальше →

Архитектура CMS. Модель данных. Часть 1

Reading time8 min
Views6.5K
Система управления содержимым (CMS) обязана предоставить гибкие всеохватывающие функциональные возможности для управления содержимым сайта, облегчить работу администратора-конфигуратора и способствовать созданию удобного в использовании сайта. Содержимым сайта можно назвать новости, размещенные на нём, а также статьи, комментарии, фотографии. Содержимым также являются целые структуры информации: новостные ленты, каталоги, форумы, блоги. Обобщенно: содержимое – это данные, размещенные на сайте.

CMS может просто передавать данные по запросу клиентскому приложению, например сетевой программе, flash-клипу или AJAX-приложению. Но чаще всего, CMS предоставляет клиенту уже подготовленные для отображения данные в HTML формате. В этом случаи, для обеспечения доступности, легкости восприятия и удобства пользования содержимым, выполняется стилизация и объединение его с элементами оформления (темы, шаблоны), навигации (меню, ссылки) и управления (формы и ссылки тоже), и всем этим тоже нужно управлять.

Идея


Окружающий мир воспринимается нами объектным, мы мыслим «объектами», в наших умах выстраивается объектная модель мира. Поэтому нам не составит труда создать объектную модель содержимого сайта и управлять ею. Новости, товар в каталоге, сообщения на форуме и сами форумы, и все другое можно представить в виде объектов. Устанавливая связи между объектами, можно создавать структуры данных любой сложности, от добавления комментариев к статьям до создания социальных сетей и более.

Объекты, классы и связи данных – это информация, которую нужно уметь создавать, хранить, использовать, изменять и удалять. В нашем распоряжении реляционная база данных для хранения информации. Действия же совершаемые с информацией – часть логики функционирования CMS, которая в большей части будет реализована модулем данных Data.
Читать дальше →

До $1 000 000 на стартап

Reading time2 min
Views583
В последнее время все чаще приходится читать статьи на хабре об ослаблении деятельности венчурных фондов и бизнес-ангелов в связи с ухудшившимися финансовыми условиями. В результате чего действительно стоящие идеи не находят капитала для своего воплощения в жизнь. Поэтому хочу написать пост о стартовавшем пару месяцев назад проекте — венчурном фонде Softline Venture Partners, который c удовольствием рассматривает перспективные проекты для инвестиций и готов предоставить стартапам до $1 000 000.
Читать дальше →

Краткий обзор развития фреймворка Ruby on Rails за последние 14 месяцев

Reading time12 min
Views1.2K
За временем не успеть. Все вокруг развивается очень стремительно. В какой-то момент я заметил, что хоть и работаю с последней версией Ruby on Rails, но многих «фич», которые в ней реализованы я не использую, более того о многих я даже не слышал.
Я попробую сделать ретроспективу, что было введено в Rails за последние 14 месяцев. Каждое нововведение буду сопрождать небольшим примером, который буду копировать as is из источника, на котором основана статья, так как подобные пояснения для каждой это тема для кучи отдельных статей или ссылкой.
поехали

Аренда сервера для стартапа

Reading time2 min
Views26K
Недавно озадачился вопросом поиска выделенного сервера для своего стартапа. После просмотра российского рынка пришел в ужас и перевел взгляд на зарубежный, парой интересных предложений которого и хочу поделиться.

К примеру аренда четырехядерного AMD Opteron 2344 HE (1.7 GHz), 4Gb RAM, 2x250GB HDD обойдется в $100, что сравнимо с арендой порта и места в стойке под сервер у нас в стране.
Читать дальше →

Планарий. Легкое управление делами

Reading time2 min
Views1.2K
image Еще с момента поступления в университет я был постоянно в раздумьях о том, что дел-то как-то много стало, и в голове держать их все вместе сложно, поэтому пора уж заняться планированием. Было перепробовано множество способов, начиная с ежедневника и аутлука, заканчивая всевозможными сайтами. И чаще всего, тот или иной инструмент не устраивал по ряду причин.
Читать дальше →

Вступление

Reading time1 min
Views3.9K
Haskell достаточно необычный язык. Но, несмотря на немалое количество статей по нему, нередко можно столкнуться с мнением, что всё это помогает лишь в синтетических примерах. И действительно, на простых примерах всё выглядит просто, но куда сложнее представить себе хотя бы небольшую программу в таком стиле, а статьи зачастую рассматривают особенности языка. Поэтому я захотел написать серию статей, в течение которых мы изучим возможности языка и попробуем написать простой чат. Почему именно чат? Потому что там есть место и многопоточности, и GUI клиента, и БД сервера. Хотя я с удовольствием послушал бы и ваши предложения, так как мне самому интересно, насколько этот язык удобен для решения более сложных задач.
Так что, если вас это заинтересует, то я рискну.

Основы
Типы данных, паттерн матчинг и функции
Классы типов, монады

Information

Rating
Does not participate
Location
Герцлия, Тель-Авив, Израиль
Registered
Activity