Программистов часто обвиняют в том, что они делают свою работу неряшливо. В природе существует бесчисленное количество программ, которые падают, зависают или неожиданно пишут на экране «Превед медвед» миллион раз.
ESQUELETO @ESQUELETO
User
Как собрать Кубик Рубика 5х5х5 (часть 1)
8 min
40KВ далеком 2008 году в мои руки попал кубик рубика нестандартных размеров. Как собирать такое чудо, я тогда и понятия не имел. Поначалу мы с друзьями собирали его частично, не имея понятий об алгоритме сборки, но потом захотелось всё-таки научиться собирать его полностью. Через гугл я нашёл некоторое подобие алгоритма сборки, но он к сожалению был неполный и грешил неточностями. Некоторое время анализировав нагугленное и алгоритм классической сборки кубика 3х3х3 я осознал полный алгоритм сборки куба не только 5х5х5, но и 4х4х4 (хотя у меня под рукой не было такого куба, я написал программу для моделирования такого кубика в 3D и проверил алгоритм). Всем, кто хотел бы научиться собирать такой кубик — добро пожаловать под кат.
+214
Деревенские заметки
4 min
3.2KПривет, друзья!
Уже несколько дней живу в деревне – радуюсь солнышку и теплу.
Вот несколько интересных наблюдений о деревне.
Сегодня купил в местном сельпо мангал – неплохой такой мангал и шесть шампуров к нему обошлись в 190 рублей. Коммунизм уже наступил.
Местная речка оккупирована продленкой в школе и местными девушками – мальчиков почти нет. На купальники и прочую ерунду многие не обращают внимания – купаются и загорают топлесс или просто в чем мать родила. На меня посматривают многозначительными взглядами.
Покупал в магазине пять литров молока, думал что спросят что так много купил. Спросили почему так мало – обычно берут от 10 литров за раз. Хлеба тут тоже покупают по пять-шесть буханок. Вообще здешние закупают неприлично много продуктов – тушенку, какую-то колбасу по девяносто рублей килограмм (я думал такой вообще не существует). Все это слабо вяжется с местными зарплатами – в среднем получают по пять-шесть тысяч в месяц.
В деревне два магазина – один продает продукты, а второй продукты и водку. Первый работает до шести, второй – до 11.
Уже несколько дней живу в деревне – радуюсь солнышку и теплу.
Вот несколько интересных наблюдений о деревне.
Сегодня купил в местном сельпо мангал – неплохой такой мангал и шесть шампуров к нему обошлись в 190 рублей. Коммунизм уже наступил.
Местная речка оккупирована продленкой в школе и местными девушками – мальчиков почти нет. На купальники и прочую ерунду многие не обращают внимания – купаются и загорают топлесс или просто в чем мать родила. На меня посматривают многозначительными взглядами.
Покупал в магазине пять литров молока, думал что спросят что так много купил. Спросили почему так мало – обычно берут от 10 литров за раз. Хлеба тут тоже покупают по пять-шесть буханок. Вообще здешние закупают неприлично много продуктов – тушенку, какую-то колбасу по девяносто рублей килограмм (я думал такой вообще не существует). Все это слабо вяжется с местными зарплатами – в среднем получают по пять-шесть тысяч в месяц.
В деревне два магазина – один продает продукты, а второй продукты и водку. Первый работает до шести, второй – до 11.
+378
Хакеры получили доступ к базе данных пользователей The Pirate Bay
2 min
892Аргентинский хакер Ch Russo сообщил, что он с двумя партнёрами обнаружил многочисленные уязвимости на thepiratebay.org, связанные с возможностью внедрения SQL-кода. С помощью этих уязвимостей они получили доступ к базе данных пользователей сайта и тем самым получили возможность создавать, удалять, изменять и просматривать все сведения о пользователях, в том числе номера и имена файловых трекеров или торрентов, загруженных пользователями.
Скриншот административной панели The Pirate Bay, показывающей недавно зарегистрированных пользователей:
Скриншот административной панели The Pirate Bay, показывающей недавно зарегистрированных пользователей:
+59
Самообман простоты
7 min
25KВ статье рассматривается проблема превышения сроков создания программ как результат самообмана: будто бы программирование — это просто, и даже еще проще. Создатели новых технологий в области разработки программного обеспечения уверяют, что их технология поможет решить огромное количество проблем и что теперь разработка программного обеспечения становится как никогда простым и быстрым процессом. Но практика неумолима. Вновь и вновь срываются сроки завершения очередного программного проекта.
+65
Такими могли бы быть новые иконки для LiveJournal
2 min
45KНаверняка, вы слышали о конкурсе на новые иконки для LiveJournal, который объявил Артемий Лебедев. Сегодня были объявлены результаты. Не скрою, мы в Турбомилке неприятно удивлены, при всем уважении к авторам выбранных Артемием работ.
Вот такие иконки предложили мы:
Под катом подробный рассказ как мы рисовали эти иконки и почему они должны быть именно такие.
Вот такие иконки предложили мы:
Под катом подробный рассказ как мы рисовали эти иконки и почему они должны быть именно такие.
+8
Установка node.js на Linux, FreeBSD, Windows
6 min
84Knode.js — серверный асинхронный Javascript, превосходный инструмент для создания серверной части COMET приложений, в частности, для игрушек, чатов, и других высоконагруженных проектов, использующий синтаксис Javascript, прекомпилируемый в машинный код, работающий на скорости, сравнимой с кодом на C++, очень быстрый, способный держать 10 — 12 тысяч подключений, и не создающий отдельного процесса/не интерпретирующий себя заново/не запускающий процесс при каждом новом клиенте. Использует в качестве основы V8 — движок Javascript от Google. Удобные возможности, можно установить значение переменной при одном посетителе, и считать это значение при ответе другому.
Обращаю внимание на то, что если вы не программировали, например, на Python или Ruby, только на PHP, не обходите его стороной, это не ещё один незнакомый язык. И в этом его преимущество — Javascript — знакомый язык, особенно для тех, кто программировал на PHP+Javascript, но PHP не позволял очень многих вещей, особенно в связке с Apache, например, аплоад файлов с полосой загрузки (без Flash), возможность низкоуровневого управления сетью (возможность написать, например, клиента или сервер Mysql или прокси-сервер вроде nginx).
О гибкости языка говорит тот факт, что расширения для работы с MySQL, например, написаны на самом Javascript.
Я планировал написать статью с описанием этой замечательной системы, с примерами, но на момент чтения читателю хорошо бы иметь под рукой установленную версию node.js. Поэтому этот пост о том, как установить node.js, в том числе и на Windows, что актуально в связи с недавним появлением порта под cygwin. (Да, есть информация о том, где скачать node.exe)
Обращаю внимание на то, что если вы не программировали, например, на Python или Ruby, только на PHP, не обходите его стороной, это не ещё один незнакомый язык. И в этом его преимущество — Javascript — знакомый язык, особенно для тех, кто программировал на PHP+Javascript, но PHP не позволял очень многих вещей, особенно в связке с Apache, например, аплоад файлов с полосой загрузки (без Flash), возможность низкоуровневого управления сетью (возможность написать, например, клиента или сервер Mysql или прокси-сервер вроде nginx).
О гибкости языка говорит тот факт, что расширения для работы с MySQL, например, написаны на самом Javascript.
Я планировал написать статью с описанием этой замечательной системы, с примерами, но на момент чтения читателю хорошо бы иметь под рукой установленную версию node.js. Поэтому этот пост о том, как установить node.js, в том числе и на Windows, что актуально в связи с недавним появлением порта под cygwin. (Да, есть информация о том, где скачать node.exe)
+56
Распознаем текст с помощью cuneiform
2 min
30KПоступила задача наладить автоматическое распознание текста с фотографий, т.е. пользователь при загрузке фотогографии на сервер, получает еще и распознанный с нее текст. Сказано — сделано. Было найдено хорошее бесплатное консольное решение — cuneiform.
+52
Как создавалась Айчиталка. Часть 1: движок
10 min
28KСовсем недавно мы выпустили в свет первую бета-версию нашей онлайн-читалки, с которой можно ознакомиться, почитав книгу Михаила Лермонтова «Герой нашего времени». Эта читалка — результат почти семимесячной работы, пять из которых ушло только на разработку движка. Казалось бы, в интернете уже есть бесплатные и открытые JavaScript-движки для чтения электронных книг и такой долгий срок может вызвать сомнения в профпригодности разработчика (то есть меня). Но есть одно большое и жирное «НО». Мы поставили перед собой слишком амбициозную и трудновыполнимую задачу: мы хотели использовать один и тот же движок на разных устройствах, в том числе маломощных, таких как айфон или электронная читалка.
В чём же заключается трудновыполнимость задачи? В первую очередь — в очень низкой скорости работы веб-приложений на айфоне. Например, мобильный Сафари по моим прикидкам работает раз в 100 медленнее своего десктопного собрата. Если на декстопе одна и та же операция выполняется 10 мс и совершенно незаметна для пользователя, то на айфоне она может выполняться больше секунды. Для сравнения: первая версия движка разбивала небольшую главу на страницы примерно за 15 секунд. Сейчас, спустя полгода, он делает то же самое менее, чем за секунду и вполне сносно работает в нашем приложении booq.
В этой статье я не буду заострять внимание на том, как сделать свою читалку, но поделюсь опытом оптимизации веб-приложения под айфон. Статья будет интересна не только разработчикам под мобильные устройства, но и обычным веб-технологам. Ведь если ваше приложение/сайт будет быстро работать на мобильном устройстве, то представьте, с какой скоростью оно будет работать на десктопе.
В чём же заключается трудновыполнимость задачи? В первую очередь — в очень низкой скорости работы веб-приложений на айфоне. Например, мобильный Сафари по моим прикидкам работает раз в 100 медленнее своего десктопного собрата. Если на декстопе одна и та же операция выполняется 10 мс и совершенно незаметна для пользователя, то на айфоне она может выполняться больше секунды. Для сравнения: первая версия движка разбивала небольшую главу на страницы примерно за 15 секунд. Сейчас, спустя полгода, он делает то же самое менее, чем за секунду и вполне сносно работает в нашем приложении booq.
В этой статье я не буду заострять внимание на том, как сделать свою читалку, но поделюсь опытом оптимизации веб-приложения под айфон. Статья будет интересна не только разработчикам под мобильные устройства, но и обычным веб-технологам. Ведь если ваше приложение/сайт будет быстро работать на мобильном устройстве, то представьте, с какой скоростью оно будет работать на десктопе.
+137
Вот Вы сейчас скажете: «Ещё один очередной стартап», — а вот не тут то было!
4 min
17KПривет, Хабр
Это не очередной стартап по чужим калькам, подсмотренным в фейсбуке. Все стопроцентно оригинально как орбит со вкусом тыквы. По пафосности это не сравнится с технологией приготовления пиццы из пачки растаявших пельменей, но будет интересно, кэп это гарантирует. Впереди творческий микс из технической части и организационной, плюс, какие-то свои личные наблюдения. Расскажу, как все началось, немного о WPF, пару слов о том как нанимал программистов, про эксперименты в части построения работы и двойственную природу человека. Обо всем по чуть-чуть, потому что, все сразу, как всегда не умещается. Про бессонные ночи и голодные студенческие годы тоже не влезло.
Это не очередной стартап по чужим калькам, подсмотренным в фейсбуке. Все стопроцентно оригинально как орбит со вкусом тыквы. По пафосности это не сравнится с технологией приготовления пиццы из пачки растаявших пельменей, но будет интересно, кэп это гарантирует. Впереди творческий микс из технической части и организационной, плюс, какие-то свои личные наблюдения. Расскажу, как все началось, немного о WPF, пару слов о том как нанимал программистов, про эксперименты в части построения работы и двойственную природу человека. Обо всем по чуть-чуть, потому что, все сразу, как всегда не умещается. Про бессонные ночи и голодные студенческие годы тоже не влезло.
+27
Ставим Ubuntu 10.04 Lucid Lynx на iMac 21.5"
4 min
4.3KВ прошедшие выходные захотелось увидеть релиз Ubuntu 10.04 своими глазами. Первое знакомство решил осуществить в виртуальной машине. Поработав часок пришло понимание, что система мне настолько нравится, что уходить обратно в Mac OS X не хочется. Так родилась подлая мысль осуществить полный переезд из Mac OS X в Ubuntu. На реальном железе все оказалось не так гладко, как в виртуальной машине. В топике постараюсь собрать воедино разрозненную информацию о настройках железа и рассказать что же в итоге получилось.
+53
Мониторинг доступа к файлам
3 min
33KЗачастую пользователям и системным администратором необходимо отслеживать, к каким файлам обращается приложение. В Linux-е уже есть все средства для этого, и тем удивительнее постоянно слышать на форумах — есть ли аналог Sysinternal Filemon. В данной статье я опишу использование утилиты strace, и рассмотрю ряд моментов, которые ускользают от некоторых пользователей, полагающих, что приложениям надо ограничивать права даже на чтение, например, ограничить доступ mplayer-а только к показываемому фильму.
+53
Вот и мой файлообменник «прижали к ногтю»
1 min
21KВот и до моего файлообменника добрался отдел «К».
Буду вести тут записи о ходе событий.
Начало.
22.04.2010 12:00
Обнаружил что сервер не пингуется. Позвонил хостеру, попросил подключить KVM чтобы узнать в чем дело с сервером. Но подключать KVM не потребовалось. Хостер сообщил мне — "сотрудниками МВД Управления К на основании Постановления о производстве обыска (выемки) были изъят ваш сервер."
К сожалению, хостеру не дали сделать копию одной из двух бумаг, которую им показывали оперативники отдела «К». Так что узнать ни номер уголовного дела, ни ФИО следователя пока не могу.
Сейчас активно ищу адвоката чтобы не ждал пока они меня вызовут и придти с ним к оперативникам и разузнать о причинах изъятия сервера.
PS. Если у вас файлообменный сервис — закройте его нафиг. Похоже волна пошла.
Как будут новости — отпишу.
UPD. Попросили перенести из личного блога в основной. Т.к. новость интересная людям.
Буду вести тут записи о ходе событий.
Начало.
22.04.2010 12:00
Обнаружил что сервер не пингуется. Позвонил хостеру, попросил подключить KVM чтобы узнать в чем дело с сервером. Но подключать KVM не потребовалось. Хостер сообщил мне — "сотрудниками МВД Управления К на основании Постановления о производстве обыска (выемки) были изъят ваш сервер."
К сожалению, хостеру не дали сделать копию одной из двух бумаг, которую им показывали оперативники отдела «К». Так что узнать ни номер уголовного дела, ни ФИО следователя пока не могу.
Сейчас активно ищу адвоката чтобы не ждал пока они меня вызовут и придти с ним к оперативникам и разузнать о причинах изъятия сервера.
PS. Если у вас файлообменный сервис — закройте его нафиг. Похоже волна пошла.
Как будут новости — отпишу.
UPD. Попросили перенести из личного блога в основной. Т.к. новость интересная людям.
+350
Akshell, платформа социальных приложений
2 min
608 Неделю назад я запустил публичную бету своего проекта и теперь хочу рассказать о нем на Хабре.
Сначала о том, что побудило меня на создание сего творения. Не так давно социальные сети были предназначены лишь для общения отдельных групп граждан. Очень быстро они превратились в универсальный инструмент общения и охватили все слои населения. Т.к. потребности (ну и возможности) этих слоев весьма различны, вряд ли их можно удовлетворить единым набором функционала, интерфейсов и прочего. Таким образом, социальные сети неизбежно должны совершить следующую метаморфозу: превратиться в платформы. Приложения должны переселиться с окраин социальных сетей, годных лишь дляфермерской деятельности периферийного функционала, в самый центр. Они должны взять на себя большую часть взаимодействия с пользователем.
Akshell и является подобной платформой.
Сначала о том, что побудило меня на создание сего творения. Не так давно социальные сети были предназначены лишь для общения отдельных групп граждан. Очень быстро они превратились в универсальный инструмент общения и охватили все слои населения. Т.к. потребности (ну и возможности) этих слоев весьма различны, вряд ли их можно удовлетворить единым набором функционала, интерфейсов и прочего. Таким образом, социальные сети неизбежно должны совершить следующую метаморфозу: превратиться в платформы. Приложения должны переселиться с окраин социальных сетей, годных лишь для
Akshell и является подобной платформой.
+21
Привязка модели данных к представлению на javascript
7 min
3KЯ думаю многие пользуются DataBinding`ом в .NET, она же привязка данных. Она позволяет, при выделенной модели данных и независимом визуальном представлении, забыть о синхронизации данных с формой. Привязав один раз properties модели к элементам представления, мы избавляемся от десятков обработчиков onChange и подобных для изменения полей модели, а в случае изменения поля вне gui-интерфейса (например синхронизация модели с базой), мы не будем мешать уровни абстрации, чтобы обновить textBox.text. Давайте данные будут отдельно, gui отдельно. Плюс мы получаем наглядный, легко переносимый код на asp.net или даже на другой язык/платформу.
Синхронизация может быть как в двух направлениях, так и в одном, причем в любую сторону.
С развитием уровня web-ориентированных приложений, появилась возможность реализации подобного решения и на JavaScript. Ну думаю преимущества разделения данных от представления уже много где рассматривались и не раз приводили к холивару, так что упустим этот момент.
Синхронизация может быть как в двух направлениях, так и в одном, причем в любую сторону.
С развитием уровня web-ориентированных приложений, появилась возможность реализации подобного решения и на JavaScript. Ну думаю преимущества разделения данных от представления уже много где рассматривались и не раз приводили к холивару, так что упустим этот момент.
+27
Перевод — BoxedIce делится опытом перехода с MySQL на MongoDB
6 min
7.4KСсылка на эту статью уже мелькала на Хабре и я столкнулся с интересом к ней. Многие испытали проблемы с освоением оригинала на английском и я решил перевести ее.
Год назад в июле я писал о том, что мы перешли с MySQL на MongoDB.
Мы запустили MongoDB в продакшене для сервиса мониторинга Server Density. С тех пор прошло 8 месяцев и мы столкнулись с некоторыми вещами.
Заметки об использовании MongoDB в продакшене
Год назад в июле я писал о том, что мы перешли с MySQL на MongoDB.
Мы запустили MongoDB в продакшене для сервиса мониторинга Server Density. С тех пор прошло 8 месяцев и мы столкнулись с некоторыми вещами.
+44
Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables
7 min
67KЗдравствуй, Хабр!
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).
Производится тонкая настройка параметров системы. Так что север будет способен выдерживать больше подключений от ботнета, чем канал до сервера сможет пропустить.
Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.
Ваш сайт будет правильно индексироваться во время атаки, что позволит сохранить позиции в выдаче поисковых систем. Особенно актуально для сайтов с большими SEO бюджетами.
На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).
Способ реализация
Производится тонкая настройка параметров системы. Так что север будет способен выдерживать больше подключений от ботнета, чем канал до сервера сможет пропустить.
Область применения
Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.
SEO под DDoS-ом
Ваш сайт будет правильно индексироваться во время атаки, что позволит сохранить позиции в выдаче поисковых систем. Особенно актуально для сайтов с большими SEO бюджетами.
Стоимость и эффективность
На время атаки придется отказаться от некоторых сервисов вашего сайта. Возможно, придется расширить полосу канала, перенести сайт на более мощный сервер. Эффективность достигается максимизацией коэффициента масштабируемости системы. Обеспечивается быстрое наращивание аппаратных ресурсов при увеличении мощности атаки.
+165
Опыт интервью в американских стартапах
2 min
1.9KЖил я, беззаботной жизнью в теплом Ташкенте, подрабатывал фрилансом, и внезапно так получилось, что ушла вся беззаботная жизнь и я оказался в Штатах, совсем один, без друзей и близких, но с прямыми руками и знанием Ruby. За то время что я нахожусь здесь (около полугода), я приобрел немалый опыт по трудоустройству в IT-конторы, коим и хотел поделиться с сообществом
Пост публикуется по просьбе камрада sarvar.muminov, у которого еще к сожалению нет аккаунта на хабре. Инвайты можно присылать на sarvar.muminov@gmail.com
Перенес в Учись Работать
Пост публикуется по просьбе камрада sarvar.muminov, у которого еще к сожалению нет аккаунта на хабре. Инвайты можно присылать на sarvar.muminov@gmail.com
Перенес в Учись Работать
-1
Джаваскриптовая библиотека MathJax преобразует математические формулы на языке MathML или LaTeX в красивые иллюстрации
1 min
19KОбратите внимание на вот эту иллюстрацию:
Красиво, правда?
Красиво, правда?
+81
Нагрузочное тестирование «по-быстренькому»
3 min
209KМожет кому будет интересно как «по-быстрому» провести нагрузочное тестирование своего веб-приложения.
Подробности под катом
Подробности под катом
+78
Information
- Rating
- Does not participate
- Registered
- Activity