Pull to refresh
67
0
Ivan Grishaev @igrishaev

Clojure/Lisp

Send message

Портрет Нуба

Reading time17 min
Views6.5K
Чем старше я становлюсь, тем менее важной становится запятая. Пусть читатель сам решает, где ему ставить паузы. — Elizabeth Clarkson Zwart


Примерно так я комментировал свой код двадцать лет назад (внимание, чуток драмы):

/*
 * Когда мы дойдем сюда, наша структура уже будет готова. 
 * К тому же, мы создали достаточно большой буфер, в который 
 * можно засунуть все входные данные, плюс есть немного места
 * про запас. Я не уверен, понадобится ли оно, но хуже не будет. 
 * Теперь нам надо обновить счетчик, предполагая, что клиент 
 * уже прочитал значение, но еще не использовал его. Сначала 
 * я хотел переложить обязанность инкремента на плечи вызывающего
 * кода. С другой стороны, это означает, что инкремент нужно делать всем, 
 * поэтому я решил, что будет лучше перенести его сюда. Но мы можем 
 * пересмотреть это решение позже, если вдруг кому-то из внешних функций 
 * захочется делать инкремент самому.
*/
counter++; // инкрементировать счетчик для потребляемого значения

/*
 * Теперь нужно просмотреть весь буфер с данными. Для этой 
 * операции нам понадобится еще один индекс, иначе перед 
 * выходом из функции мы потеряем начальное значение. 
 * Я хотел назвать эту переменную ‘ref’, потому что в некотором
 * смысле мы будем обращаться с ней как со ссылкой на данные. 
 * В конце концов я пришел к выводу, что самым лучшим  
 * названием для нее будет ‘pos’. Если что, я не против обсудить
 * это решение.
*/
char* pos = buffer; // начинаем наш обход данных

/*
Теперь, мы...
*/


Ну что, узнаете? А должны! Если быть предельно невежливым, весь код выше написал нуб. (Между прочим, если вы не знаете, кто такой нуб, значит вы — нуб).

Читать далее
Total votes 235: ↑163 and ↓72+91
Comments171

История о том, как за год $20.000 превращаются в $2.000.000. Копини год спустя

Reading time4 min
Views2.6K
Друзья, вот так, совершенно незаметно для нашей команды прошел год с момента основания Копини. Мы писали идеалистические посты про 600 тыс руб. на запуск, офис и команду, объем рынка и продажи. Многие нам предрекали провал, банкротство и армагедец. Но все оказалось не так уж плохо…



Под катом история нашей компании за год, от основания, первых продаж и привлечения бизнес ангела, до закрытия раунда в $500 тыс. от SoftLineVP. Ну и конечно отчет, ошибки и наш опыт.
Читать дальше →
Total votes 216: ↑192 and ↓24+168
Comments150

Сумбурные заметки про python и django

Reading time5 min
Views47K
Накопилось несколько маленьких заметок/советов про python и django, которые на отдельные топики не тянут, поэтому публикую все сразу.

Под катом:
  • как упростить код вьюх ровно в 2 раза
  • легкий способ рисования графиков
  • почему Ian Bicking воскликнул «Cool!»
  • приложения для ВКонтакте на django за 5 минут
  • хорош ли pymorphy?
  • пара фишек насчет выкладки пакетов на pypi
  • что общего между декораторами и with-контекст-менеджерами
  • принимаем оплату на django-сайтах
  • показываем Яндекс.Карту для заданного адреса

Читать дальше →
Total votes 159: ↑153 and ↓6+147
Comments37

Что делать, если вы застряли с Большой и Сложной Программистской Задачей?

Reading time5 min
Views8.7K
image

Иногда, решая непростую задачу, я застреваю с ней. Я понимаю это, когда начинаю заниматься пустячными делами, раздавать советы другим людям, пить много кофе, постоянно искать что бы перекусить и работать над низкоприоритетными вещами. Время идет, а сделано мало.

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

Со временем я выработал способ, позволяющий вернуть мне продуктивность в такой ситуации и суметь закончить непростую задачу. Этим опытом я и хочу поделиться.
Читать дальше →
Total votes 158: ↑145 and ↓13+132
Comments38

Мгновенный поиск в 75 гигабайтах

Reading time8 min
Views34K
Речь пойдет о том, как был реализован быстрый поиск по большим объемам данных на этой страничке. Там можно искать пароль по хешу, для игрового сервера PvPGN, и генерировать эти же хеши.
Поиск написан на чистом PHP, без использования модулей и сторонней БД. В принципе, таким образом можно наращивать объемы до многих терабайт, было бы место — скорость от этого не сильно пострадает.

Далее от начала до конца описан весь процесс, который включает в себя брутфорс, создание хеш таблицы, её сортировка и, собственно, поиск.


Читать дальше →
Total votes 143: ↑122 and ↓21+101
Comments115

Оптимизация под новый прайс

Reading time7 min
Views1.3K
image
App Engine полным ходом идёт к светлому будущему и новой методике расчёта за ресурсы. Паника и хаос вселились в ряды разработчиков под AE — слишком многое держится в строжайшем секрете (или в компании тоже толком не знают что как будет). Но сегодня мы не будем обсуждать, будет ли blobstore включен в бесплатные квоты, или за один лишь доступ к нему придётся платить. Не обсудим куда податься, если новые цены совсем не по карману и не будем говорить о $50 «халявы», которыму гугъл пытается смягчить переход на новые рельсы (тем более, что эту радостную весть разослали всем администраторам приложений).

Сегодня речь будет идти об оптимизации приложений. Вы же уже оптимизировали своё приложение на минимальное потребление процессорного времени и памяти? Забудьте об этом, теперь это вторично и Ваши кровные будут сниматься по другим меркам.
Итак, начнём.
Total votes 31: ↑25 and ↓6+19
Comments29

Интерактивная диаграмма на CSS и HTML

Reading time1 min
Views19K

:hover


В очередной раз просматривая плагины для реализации всплывающих подсказок, наткнулся на замечательный пост.
Ничего сверхсложного и сверхсекретного в реализации не было, но она мне понравилась своей простотой и отсутствием javascript'a.
Обмозговав возможное применение, решил что на самой подсказке тоже могут быть подсказки, на подсказках второго уровня, могут быть подсказки 3его уровня и т.д. Можно сделать интерактивную блок-схему!
image
Читать дальше →
Total votes 133: ↑127 and ↓6+121
Comments32

Читаем QR код

Reading time5 min
Views1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →
Total votes 623: ↑614 and ↓9+605
Comments109

Начинающим Java программистам

Reading time2 min
Views1.2M
Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то пишите! Итак:

Основные ресурсы для начального обучения


  • www.javable.com — сайт со статьями и tutorial'ом по Java. Все в основном на русском.
  • www.exampledepot.com — очень полезный ресурс, где собраны краткие примеры использования классов для тех или иных пакетов
  • java.sun.com — без первоисточника не обойтись. Для любого Java программиста JavaDoc должен быть истиной в последней инстанции. Так же здесь можно найти серию tutorial'ов на все возможные темы.

Читать дальше →
Total votes 120: ↑113 and ↓7+106
Comments58

Российские аккаунты Paypal смогут принимать деньги

Reading time1 min
Views6.8K
Свершилось чудо — С 24 сентября у владельцев российских и украинских аккаунтов Paypal появится возможность принимать деньги на свои счета.
Здесь можно посмотреть обновлённую политику.
Total votes 360: ↑355 and ↓5+350
Comments292

Инструменты командной строки для веб-разработчика

Reading time3 min
Views40K
Жизнь веб-разработчика омрачена сложностями. Особенно неприятно, когда источник этих сложностей неизвестен. То ли это проблема с отправкой запроса, то ли с ответом, то ли со сторонней библиотекой, то ли внешний API глючит? Существует куча различных прилад, способных упростить нам жизнь. Вот некоторые инструменты командной строки, которые лично я считаю бесценными.
Читать дальше →
Total votes 227: ↑217 and ↓10+207
Comments30

Imperavi: удобный и действительно красивый JS WYSIWYG редактор

Reading time1 min
Views22K
В продолжение темы о красивой и удобной JS визуализации (http://habrahabr.ru/blogs/javascript/124899/) хочу рассказать вам о WYSIWYG редакторе, на который сегодня случайно наткнулся.

Вы наверное часто используете различные WYSIWYG редакторы в ваших проектах. Я их тоже часто использую, так уж получается, что они очень нравятся секретаршам и т.д. нашим пользователям.

Таких редакторов существуют десятки, но все они мне почему-то не нравилисись: то выглядит уж очень топорно, то работает совершенно криво. В конце концов я остановился на TinyMCE. Он хоть и ужасен на вид, но рабоет стабильно.

И вот сегодня я совершенно случано наткнулся на редактор, который мне полностью подходит:
  • работает стабильно
  • выглядит очень стильно
  • написан на jQuery

Имя этому чуду – Imperavi.
Попробуйте сами и думаю, что вам понравится.

Скриншот:
image

UPD
Более новая версия редактора: http://imperavi.ru/redactor/.
Total votes 148: ↑124 and ↓24+100
Comments116

inmile.com – второй запуск

Reading time3 min
Views819
inmile.com

Несколько месяцев назад я представлял читателям Хабра свой геолокационный сервис inmile.com, получив отличную обратную связь (мысли, баги, критику), я сел его переделывать и дорабатывать.

Сервис не работал три месяца (был закрыт), и сейчас я открываю его для бета-тестирования.

Естественно, первые, кому хочется об этом рассказать – хаброжители, ведь именно их идеи и замечания стали отправной точкой для переработки.
Читать дальше →
Total votes 83: ↑74 and ↓9+65
Comments131

Мой опыт вывода денег с заблокированного PayPal аккаунта

Reading time7 min
Views54K
Вот уже около 3-х лет занимаюсь интернет коммерцией. Работа в основном направлена на зарубежные сайты по продаже электроники. Начинал бизнес с открытия ebay аккаунта и уже тогда вопрос стал ребром, т.к. для работы с ebay нужен верифицированный аккаунт PayPal. Я являюсь гражданином Украины, следовательно, никаких шансов открыть свой собственный аккаунт у меня не было, т.к. PayPal ни тогда ни сейчас не работает с Украиной, поэтому пришлось просить друга, который проживает в Великобритании, открыть аккаунт на его имя. Впринципе, открытие аккаунта в Англии является делом обыденным. Все что требуется, это действующий банковский счет, после чего нужно пройти несколько этапов для того чтобы подтвердить что вы владелец этого счета. Так же вы указываете свой адрес, который могут попросить подтвердить. Для этого достаточно будет отправить так называемый Bank Statement, т.е. выписку из банка. Выглядит она примерно так:

image

Читать дальше →
Total votes 100: ↑96 and ↓4+92
Comments56

10 способов улучшить свои навыки программирования

Reading time4 min
Views88K

1. Выучить новый язык программирования


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

Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).

Читать дальше →
Total votes 239: ↑227 and ↓12+215
Comments96

Сравнение эффективности способов запуска веб-приложений на языке Python

Reading time8 min
Views16K
Последнее время в области веб-разработок стал набирать популярность язык программирования Python. Однако, массовому распространение Python мешает проблема эффективного запуска приложений на этом языке. Пока, в большинстве случаев, это удел выделенных или виртуальных серверов. Модульные языки в отличии от монолитного в базовой функциональности php на каждый запрос подгружают как минимум runtime-библиотеку, а как максимум — ещё несколько десятков запрашиваемых пользователем модулей. Поэтому классический подход наподобие mod_php для Python и Perl не очень уместен, а держать приложение постоянно в памяти было дороговато. Но время движется, техника стала мощнее и дешевле, и уже достаточно давно можно спокойно говорить о постоянно запущенных процессах с приложением в рамках массового хостинга.

О чём тут

Время от времени, в сети появляются различные предложения как запустить приложение на Python. Например, недавно хостинг Джино уникально поправил mod_python и предложил хостинг именно с его помощью. Следом за ним, некий хостинг Locum вообще отринул mod_python с его безопасностью (создаётся впечатление, что суть самобытная безопасность — это единственная проблема АйТи на пути к нирване) и провёл победоносное тестирование modwsgi против fastcgi. Комьюнити же, судя по проведённому мною поиску, разрывается между mod_python и FastCGI. Причём, FastCGI обычно имеется ввиду тот, что идёт в поставке Django — flup. Являясь популярным хостингом Python-приложений, мы не смогли пройти мимо и решили внести свою лепту в эту священную войну.
Читать дальше →
Total votes 57: ↑49 and ↓8+41
Comments91

Главное – хвост! или Отказ от регистрации 2

Reading time4 min
Views1.4K
Заметка «Отказ от регистрации» взбудоражила мой ум и я часа 2 не мог уснуть (или это была чашка кофе на ночь?..)

Я и раньше читал про «мягкую» регистрацию, или отложенную регистрацию, или «ненавязчивую» регистрацию и тогда я для себя решил, что выходом будет OpenID и всё, что на него похоже. Но при работе над текущим проектом я понял, что это мне совершенно не подходит.

Решение пришло как раз перед сном, а реализацию сделал сегодня утром. Остался доволен.

Но, обо всём по порядку.

Читать дальше →
Total votes 82: ↑63 and ↓19+44
Comments137

Многопользовательский чат на BAT

Reading time3 min
Views22K
Был период, когда в универе задали сделать несколько чатов. В зависимости от вариантов, были заданы различные способы взаимодействия программ от сокетов до майлслотов (mailslot). Когда задания были прикончены, остались силы взяться за скрипты BAT. Вот что получилось…



Всё что нужно для запуска:
1. Взять код по ссылке в конце статьи
2. Сохранить код в файл *.bat
3. Положить файл в сетевую папку
4. Запустить файл с разных компов (можно и с одного)

В комментариях предложили использовать совместно с DropBox, но говорят — что работает весьма не быстро.
Читать дальше →
Total votes 247: ↑242 and ↓5+237
Comments72

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity