Search
Write a publication
Pull to refresh
27
0
Андрей Журавлёв @Gen1us2k

Разработчик

Send message

Улучшаем админку

Reading time6 min
Views80K
Одно из слабых мест джанго-админки — главная страница. Идея авто-группировки моделей по приложениям и вывод столбиком в одну колонку работает только на начальных этапах, дальше это становится просто неудобно — куча лишней информации и довольно сложные пути для того, чтобы добавить полезную. Ну, например, чтобы названия приложений писались русскими буквами — полностью перекрывать шаблон.

И тут на помощь приходит django-admin-tools. С этим приложением минут за 20 можно получить «приборную панель» с произвольной группировкой приложений/моделей, вкладками, любым числом колонок, различными блоками, которые каждый пользователь сможет расставить, как ему удобнее, скрывать и сворачивать по желанию, закладками, настраиваемым меню и удобным способом добавления во все это хозяйство всего, чего только можно придумать.

Вот так, например, сейчас выглядит админка к сайту НадоВместе:

image
(это только часть, вот скриншот целиком)

Разберемся поподробнее.
Читать дальше →

Юникод для чайников

Reading time8 min
Views329K
logo
Сам я не очень люблю заголовки вроде «Покемоны в собственном соку для чайников\кастрюль\сковородок», но это кажется именно тот случай — говорить будем о базовых вещах, работа с которыми довольно часто приводить к купе набитых шишек и уйме потерянного времени вокруг вопроса — «Почему же оно не работает?». Если вы до сих пор боитесь и\или не понимаете Юникода — прошу под кат.

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

Фриланс. Видеть цель и преодолевать препятствия

Reading time6 min
Views17K
Эта статья – о стандартных управленческих методах, которые помогают повысить эффективность работы и быстро занять высокую позицию даже в такой, казалось бы, не ассоциирующейся с понятием «управление» области, как фриланс.
Речь пойдет о вполне прозаических вещах: стратегическом и календарном планировании, учете и отчетности.
Все, что написано в статье, я проверил на себе в течение года и убедился, что метод работает.

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

IMAP: трудности перехода

Reading time7 min
Views45K

Какие грабли зарыты в IMAP



Уже некоторое время IMAP работает в Почте Mail.Ru в полную силу, и я готов рассказать о том, с какими проблемами мы столкнулись при его запуске. Часть из них была связана с особенностями самого протокола и с его историей, другие были обусловлены спецификой взаимодействия IMAP с нашим хранилищем. Отдельная категория трудностей вызвана многообразием почтовых клиентов.

За подробностями — добро пожаловать под кат.
Читать дальше →

Подробно о генераторах случайных и псевдослучайных чисел

Reading time11 min
Views330K
На Хабре и в сети часто начали появляться статьи, посвященные уязвимостям генераторов случайных чисел. Данная тема крайне обширна и является одной из основных в криптографии. Под катом находится описание случайных чисел от A до Z. Статья является результатом свободного перевода цикла статей из одного западного блога и личных дополнений автора. Основная цель — получить feedback и поделиться знаниями.
image
Читать дальше →

Анимированный GIF со звуком

Reading time4 min
Views81K
«Что позволило остаться GIF, это — циклическое проигрывание анимации, которое добавил Netscape. Если бы Netscape не добавил поддержку GIF в свой браузер, GIF умер бы в 1998»

— Александр Тревор (Alexander Trevor),
руководитель команды по созданию GIF в CompuServe

Формат GIF в июне этого года отпраздновал свое 25-летие, и является сегодня самым старым графическим форматом, который распространен в интернете. Посвящая выходные просмотру смешных анимированных гифок понимаешь, что некоторые из них были бы в разы лучше со звуком. Все текущие решения для циклической анимации со звуком (например: coub.com, gifsound.com) предлагают отказаться от GIF, но это — не выход. И я решил пожертвовать просмотром гифок на выходных для решения этой крайне важной проблемы.

Первая в интернете гифка со звуком по ссылке. Надо нажать на синюю кнопку, а потом на гифке. Плеер должен работать во всех современных браузерах (тестировался в последнем Firefox и Chrome).

Гифок под катом не будет, а будет процесс создания расширения для стандарта, написания конвертера и плеера.
детали реализации

Ностальгия: как работают «сохранения на бумажке»

Reading time17 min
Views81K
Признавайтесь, кто в детстве часами напролёт просиживал за игрой в «Денди» или «Сегу»? А кто по мере прохождения игры записывал пароли на бумажку или в специально заведённую тетрадку? Если это вы, и раз уж вы читаете этот сайт, то у вас наверняка хоть раз возникал вопрос: «а как же это работает?»

Я постараюсь объяснить принципы работы классических механизмов генерации паролей на примерах из игр моего детства. Заранее прошу меня извинить за то, что все примеры будут с платформы NES (да, та, которая «Денди»), хотя тематика только ею не ограничивается. Так уж получилось, что не нашёл в себе достаточно мотивации, чтобы провести немного больше исследований и написать немного больше текста.
Читать дальше →

Как не заболеть интернет-аутизмом?

Reading time3 min
Views36K
Побывав однажды на одном ИТ-чемпионате, я поразился тому, насколько люди были замкнутые (не все, но многие). Т.е. в твиттере такие посты пишет, но выйти на сцену за законным своим призом человек еле смог. Да и так получилось, что и моя работа последние несколько лет в основном только в интернете. И все опасности онлайн-закрытости я тоже постоянно испытываю на себе.

image

Данная заметка не ответ, а, скорее вопрос о том, как с этим борются те, кто живет в онлайне?

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

Трехмесячный программист

Reading time4 min
Views221K
Почти каждый может вспомнить выдающегося одноклассника, который не развил свой талант. Для меня показательна история, как одна из моих одноклассниц к 11 классу знала три языка и могла бегло на них говорить, но потом она получила специальность «бухгалтер», языки постепенно забыла.

Часто на наш выбор влияют наши родители. Они хотят, чтобы мы получали много денег, а значит настаивают на выборе будущей профессии. Особенно остро, эта ситуация ощущается в странах, где не было масштабных кризисов, и где адвокат или доктор всегда получал много. К примеру, у ребенка талант к рисованию, он шариковой ручкой вырисовывает картины в стиле Леонарда да Винчи, а ему папа говорит: «Бросай эту глупую затею, иди учись на адвоката».

Уже более в сознательном возрасте эти установки продолжают над нами довлеть. Когда сам человек думает: «Куда бы пойти, где больше платят?». Это приводит к такому явлению, как «быдло-кодер». Но сейчас я бы хотел поговорить не об этом, а таком явлении, как «программист-2К». Я очень надеялся, что с тех пор многое изменилось, но масштабная проблема вскрылась, когда в США произошел финансовый кризис. Далее идет описание событий случившееся в США, конкретно, город Нью-Йорк.


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

Пятнадцать мифов о восстановлении и потере данных

Reading time6 min
Views246K
За годы работы мы в Storelab Data Recovery собрали небольшую коллекцию мифов об утере и восстановлении данных. Некоторые из них активно тиражируются на различных компьютерных и не очень форумах — поэтому, надеемся, эта статья будет полезна тем, кто ищет помощи, когда сломался диск или потеряны данные. Итак, пост о том, как не сделать трудную ситуацию ещё хуже.


На фото — результат «охлаждения» жёсткого диска
Читать дальше →

Unity3d, Агенты и Танчики

Reading time3 min
Views19K
image

Всем доброго времени суток!

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

Давно хотел этим заняться, но все времени не было. Сейчас наконец-то дошли руки сделать среду для агентов, хотя и не в таком масштабе. Так что если кому-нибудь интересно, присоединяйтесь! Репозитарий открытый, ссылка внизу.
Читать дальше →

Читаем с экрана красиво

Reading time6 min
Views18K


Лирика


Желаю доброго дня уважаемому Хабра-сообществу.

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

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

Видимо ностальгия ударила по мне, а может хроническая лень на секунду отпустила, но загорелся я идеей улучшить качество чтения различной литературы с монитора. Конечно каждый скажет – да кто сейчас читает-то с экрана? Вон устройств каких только не понавыпускали, пользуйся да ни о чем не волнуйся. Однако есть моменты, когда почитать хочется именно сию секунду, а качество оформления текста удручает.
О чем это я?

Как обойтись без капчи?

Reading time2 min
Views130K
К сожалению, на многих сайтах без особой необходимости используют капчи. Хотя можно побороть спам и незаметными для пользователя способами. Особенно, капчу больно видеть на небольших коммерческих сайтах в форме обратной связи, поскольку, капча заметно снижает конверсию таких сайтов. Для больших сайтов, которые могут специально спамить, такие методы не применимы. Однако, в большинстве случаев, без капчи можно обойтись

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

Как гуманитарию стать программистом?

Reading time6 min
Views227K
Я начал писать этот пост два месяца назад еще до появления цикла постов «Хочешь быть программистом, стань им». Я читал комментарии к статьям, переписывал статью. В конечном счете, учтя все замечания от людей, которые убеждены, что для программирования нужны какие-то специальные мозги, мой им ответ: «Для нежелания чего-либо делать, сгодится любое оправдание».

Итак, как гуманитарию научиться программировать?
Ответ. Надо следовать принципу: «Глаза боятся, руки делают».

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

Далее вы найдете сборник полезных советов, которые мне помогли. Пару слов об авторе: я гуманитарий, окончивший исторический факультет.
Читать дальше →

Безопасность OAuth2

Reading time5 min
Views118K
Данная блогозапись на хабр прежде всего обусловлена появлением «Ключницы» — хороший повод связать и перевести накопленное.


У нас в программе: вольный пересказ спек OAuth2, слабые стороны и Threat Model, 0day на хабретрюк с аутенфикацией.
image
Читать дальше →

Как написать игру

Reading time4 min
Views89K
image
Такой заголовок был выбран с умыслом, намеренно, чтобы когда человек, впервые задумавшийся о том, что сейчас он сделает свою MMO за пару месяцев с друзьями, вбив эти слова в гугл, попал сюда, прочитал и осознал что такое разработка игры.
Читать дальше →

Unix как IDE: Введение

Reading time3 min
Views38K
Профессиональные программисты, как новички, так и опытные, обычно придерживаются концепции IDE, или «интегрированной среды разработки». Правда, удобно же иметь самые необходимые средства организации, написания, поддержки и тестирования кода в одном приложении с единым интерфейсом для всех инструментов? К тому же, среда, специально спроектированная для программирования, дает ряд преимуществ, таких как автодополнение, проверка и подсветка синтаксиса.

Подобные средства есть для всех распространенных настольных ОС, включая Linux и BSD, и многие из них совершенно бесплатны, так что вряд ли имеет смысл ограничивать себя в Блокнотом Windows, nano или cat.

Однако, в среде поклонников Unix гуляет в разнообразных вариациях мем о том, что «Unix — это IDE», в том смысле, что средства, которыми разработчики располагают в терминале, легко реализуют основные возможности современных IDE. Вы можете соглашаться или отказываться признать Unix «IDE» в том самом смысле, что Eclipse или Microsoft Visual Studio. Так или иначе, вас скорее всего удивит, насколько законченную среду разработки может являть собой скромный Bash.
Читать дальше →

Кто заказывал такси на Дубровку?

Reading time10 min
Views8.3K
Недавно мне довелось познакомиться с создателями сервиса GetTaxi, так что в этой статье я расскажу о том, как он появился и работает, а заодно проведу небольшую экскурсию по их офису.

Начать стоит с того, что компания совсем молодая. Ей едва исполнилось два года, но этот возраст — прям с самого рождения; осознанный и дееспособный возраст чуть меньше — около года. Все началось на земле обетованной, в Израиле — именно там находится главный офис компании и именно там создателям Шахару Вайсеру и Рои Мору впервые пришла идея как-нибудь “по-новому” организовать работу такси. Судя по всему, им это удалось — сейчас GetTaxi пользуется на родине большой популярностью, а сам сервис получил финансирование в размере 30 миллионов $, что позволило ему развиваться ещё более динамично. Недавно сервис появился в Москве и вот с этого места я начну поподробней.
Читать дальше →

Доставка свежей прессы с помощью Python прямо в почтовый ящик

Reading time4 min
Views17K
В данной статье будут освещены следующие возможности python'a:
  • парсинг web-страницы с помощью простого регулярного выражения;
  • скачивание файла с web-страницы;
  • отправка скаченного файла через smtp-сервер;
  • написание небольшого обобщающего скрипта.

Все это будет сопровождено работающими примерами.
Читать дальше →

Как работает yield

Reading time6 min
Views729K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ

Information

Rating
Does not participate
Registered
Activity