Как стать автором
Обновить
0
0
Денис @le_den

DevOps Infrastructure

Отправить сообщение

Если поумнеет

Время на прочтение3 мин
Количество просмотров3.2K
Ох этот скромный {% if %}. Краеугольный камень шаблоной логики Django.

Каждый, кто начинал работать с Django 1.1 (или ранее), почти наверняка спотыкался об этот камень — шаблонный тег {% if %} поддерживает булеву логику только на базовом уровне.
Читать дальше →
Всего голосов 64: ↑50 и ↓14+36
Комментарии38

Бизнес 160 байт. Часть вторая, техническая

Время на прочтение5 мин
Количество просмотров11K
В первой части намеченной серии статей мы рассмотрели некоторые общие вопросы работы с СМС-сообщениями, теперь с небольшой задержкой публикуем очередную статью. Итак, вспомним: сообщения могут быть входящими и исходящими, за обработку сообщений отвечают СМС-центры, есть возможность подменить отправителя сообщения.

Начнем вторую часть с самого важного — с протокола. Конечно, для работы с СМС-сообщениями разработан свой протокол — SMPP (Short Message Peer-to-Peer Protocol), на котором и происходит общение между СМС-центрами. Разработкой протокола занимается организация SMSforum, публикующая его спецификации. Для работы с этим протоколом существует целый ряд библиотек на разных языках [1][2][3], но наиболее популярным open source решением является сервер kannel, который реализует все основные аспекты работы с СМС и одновременно является WAP-шлюзом. СМС-центры могут передавать сообщения не только через SMPP, но и через любой другой протокол — HTTP, OSCAR, XMPP или почтовый протокол для отправки на электронную почту. Для работы с различными веб-проектами используется трансформация в HTTP-протокол, наиболее удобный и привычный для веб-разработчика. Поэтому, как было верно отмечено в комментариях к первой части, знать и использовать SMPP разработчику вовсе не обязательно.
Читать дальше →
Всего голосов 35: ↑25 и ↓10+15
Комментарии24

Уроки Python от компании Google

Время на прочтение1 мин
Количество просмотров120K
Отличный способ освоить Python — учебный класс Python в Google Code University. Уроки для этого класса написал Ник Парланте из Стэнфорда, и прошедшие курс люди отмечают не просто высокое, а фантастически высокое качество уроков.

Курс включает в себя шесть видеолекций на Youtube, где Ник проводит обучение новичков-гуглеров и подробно рассказывает о разных хитростях и фичах Python. Некоторые видеолекции длиной до 50 минут.

Есть ещё скачиваемые задачки. Они довольно простые и созданы специально для начинающих. Курс идеально подходит для изучения Python программистами, имеющими опыт работы с другими языками программирования.
Всего голосов 159: ↑148 и ↓11+137
Комментарии77

Побеждаем утечки памяти и ускоряем работу Firefox

Время на прочтение3 мин
Количество просмотров221K
Про утечки памяти в Огнелисе на Хабре уже было несколько постов, но ни в одном из них нет полного, с моей точки зрения, набора инструкций. Под катом я попытаюсь собрать все вместе, добавив то, что помогло в решении вопроса мне.

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

А если вам просто понравилась девушка с картинки, то здесь хайрез :)

Читать дальше →
Всего голосов 132: ↑96 и ↓36+60
Комментарии111

Подборка html/javascript/css инструментов и библиотек от SmashingMagazine

Время на прочтение5 мин
Количество просмотров22K
Разработка вебинтерфейсов дело не самое легкое. Причем начать вроде бы несложно, а вот добиться совершенства поистинне проблематично. Уж очень многое необходимо учесть. Просто масса настроек и ньюансов, в которых легко запутаться и сделать что-то не так. К счастью, разработчики и дизайнеры склонны упрощать этот нелегкий труд и постоянно изобретают всяческие инструменты позволяющие сделать больше и лучше за то же самое время, а главное не погрязнуть в мелочах и состредоточиться на чем-то более важном.

Множество удобных инструментов, найденных командой популярного онлайн журнала SmashingMagazine, приводится под катом
Читать дальше →
Всего голосов 125: ↑123 и ↓2+121
Комментарии19

Универсальное чтение ячеек в PHPExcel

Время на прочтение4 мин
Количество просмотров103K
Привет, Хабр!
Мне по работе часто приходится импортировать Excel-документы средствами PHP.
Для этого я использую библиотеку PHPExcel, которая на сегодняшний день является весьма удобным инструментом.
Но есть несколько «скользких» моментов, связанных с чтением данных из ячеек, о которых я хочу рассказать хабрачитателям, а также разобрать функцию, решающую эти проблемы.
Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии29

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

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

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

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

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

Разберемся поподробнее.
Читать дальше →
Всего голосов 105: ↑100 и ↓5+95
Комментарии45

Делим на страницы

Время на прочтение4 мин
Количество просмотров11K
Практически в любом сайте есть нужда разбить вывод информации на страницы. В джанге уже есть некоторые вещи которые помогут в написании своего пагинатора, но вот что бы взять и в две строчки сделать пагинацию для любой вьюшки — такого пока не встречал.

Я решил написать такой, благо идея как его сделать у меня зародилась уже давно. Итак встречаем, django-simplepagination.

Читать дальше →
Всего голосов 51: ↑45 и ↓6+39
Комментарии55

Профили пользователей: плюсы, минусы, подводные камни

Время на прочтение5 мин
Количество просмотров12K
Не секрет, что работу с профилями пользователей в Django иначе как несчастьем не назовёшь. Все мы сталкивались с монолитностью модели auth.User, неадкеватным набором полей у неё, а также всеми теми ухищрениями, к которым приходилось прибегать.

Извращаться приходилось всем: не только пользователям джанги, но и самим её core-разработчикам. Помните, например, как в Django 1.2 внезапно стало возможно использовать в поле username символы собаки (@) и точки? Знаете зачем? Чтобы в качестве логинов можно было использовать адреса e-mail.

Нам, простым пользователям, тоже жилось несладко. Для того, чтобы изменить профиль пользователя, добавив ему какие-нибудь интересных полей — обычная, казалось бы, вещь, да? — приходилось действовать разными способами.
Интересно?
Всего голосов 67: ↑64 и ↓3+61
Комментарии45

Я не знаю Си

Время на прочтение4 мин
Количество просмотров51K
Цель этой статьи — заставить всех, особенно программистов на Си, сказать «я не знаю Си».
Хочется показать, что тёмные углы в Си значительно ближе, чем кажется и даже тривиальные строки кода несут в себе undefined behavior.
Читать дальше →
Всего голосов 285: ↑268 и ↓17+251
Комментарии309

Ещё 10 батареек для джанго

Время на прочтение5 мин
Количество просмотров27K

Продолжаем делиться своим опытом использования полезных батареек для Django.
Первая часть
Ещё рекомендуем «Сумбурные заметки про python и django» и «Django проект PR Hero: что внутри и полученный опыт».

Для Django написано огромное количество пакетов. Из них мы выбрали 10, которые использовали сами в своих последних проектах и которыми остались довольны. Все они есть на PyPI. Они продокументированы и покрыты тестами, где-то больше, где-то меньше. Исключение составляет django-sphinx, о котором отдельно.

Читать дальше →
Всего голосов 60: ↑56 и ↓4+52
Комментарии42

История о том, как я перешел на свои хлеба (делюсь опытом для начинающих и прошу совета бывалых)

Время на прочтение13 мин
Количество просмотров24K

Мотив написания статьи


Читая хабр, извлек для себя много полезного: некоторые статьи заставляли много думать, некоторые вдохновляли на определенные действия, какие-то, возможно, предотвратят мои дальнейшие ошибки. И хотя на себя я работаю всего лишь год, за это время в моей жизни произошел ряд существенных изменений. Я получил для себя ответ на вопрос «быть или не быть», которым я задавался, работая «на дядю» и теперь хочу вдохновить тех, кто подумывает о том, чтобы вырваться из рабства вашего начальства и основать собственное дельце, но, вместе с тем, я не достиг особых высот, и нуждаюсь в совете тех, кто, собственно, преуспел.
Читать дальше →
Всего голосов 200: ↑174 и ↓26+148
Комментарии150

Управление пакетами Python при помощи easy_install

Время на прочтение3 мин
Количество просмотров81K
Инструмент easy_install является модулем набора расширений к distutils языка Python — setuptools. Согласно официальной документации «Easy Install — это модуль Python (easy_install), идущий в комплекте библиотеки setuptools, которая позволяет автоматически загружать, собирать, устанавливать и управлять пакетами языка Python». Пакеты носят название «eggs» и имеют расширение .egg. Как правило, эти пакеты распространяются в формате архива ZIP.
Читать дальше →
Всего голосов 52: ↑38 и ↓14+24
Комментарии28

Первые шаги в программировании на Python

Время на прочтение3 мин
Количество просмотров37K
Пару месяцев назад взялся я за изучение Python. Прочитав про используемые структуры, работу со строками, генераторы, основы ООП, размышлял какую полезную программу написать, что бы это все применить на реальной задаче.
По счастливому стечению обстоятельств ко мне обратились знакомые с просьбой скачать мультфильм «Чудеса на виражах».
Читать дальше →
Всего голосов 60: ↑44 и ↓16+28
Комментарии35

Скрипт для Notepad++ на Python

Время на прочтение4 мин
Количество просмотров67K

Введение


Думаю, многим известен Notepad++ — удобная бесплатная утилита, выступающая в качестве «продвинутой» замены стандартному Блокноту Windows. Как и при работе в любом текстовом редакторе, в Notepad++ время от времени возникает необходимость автоматизировать какие-либо повторяющиеся действия, которые в силу сложности логики невозможно записать как макрос. К счастью, для решения этой задачи нет необходимости переключаться из Notepad++ в, например, Word, дабы воспользоваться встроенным в него VB.

Среди плагинов для Notepad++ существуют расширения, реализующие возможность написания скриптов для Notepad++ на разных языках, таких как JavaScript, Lua, PHP или Python. Именно на последнем я и решил остановиться для решения своей задачи.
Читать дальше →
Всего голосов 82: ↑78 и ↓4+74
Комментарии23

Python на примере демона уведомления о новых коммитах Git

Время на прочтение4 мин
Количество просмотров27K
Работая в команде я люблю быть в курсе активности участников. Поэтому было решено написать демона наблюдающего за поступлением новых коммитов в репозиторий git’а. Так как я работаю в Ubuntu, то уведомление было реализовано встроенным способом — библиотекой libnotify.
Язык — Python!

image

В статье упоминается:
1. Демон на Python;
2. Логирование на Python;
3. Хранение конфигурационных файлов программ на Python;
4. Работа с командами ОС из скриптов Python;
5. Получения списка последних изменений из git’а;
6. Стандартные всплывающие уведомления Ubuntu.
Читать дальше →
Всего голосов 69: ↑65 и ↓4+61
Комментарии27

Решение проблемы с местом, организация директории «Разобрать»

Время на прочтение4 мин
Количество просмотров3.5K
Думаю у каждого из нас имеются директории «Разобрать» и «Downloads», заглядывая в которые все мы ужасаемся от их содержимого, и в особенности от самой идеи, что когда-нибудь все это придется разгребать. Предлагаю свое решение проблемы с недостатком места, это не способ суперархивации, и не способ бесконечного наращивания места где-либо в облаке, лишь идея по организации скачанной информации.

image

Какова вероятность того, что если о файле не вспомнилось в течение 2 недель, вспомнятся через год или два, при том, что почти все скачанное в Интернете имеет свойство быстро устаревать. Данное решение так же подходит и для организации shared ресурсов (файловых помоек).
Читать дальше →
Всего голосов 60: ↑44 и ↓16+28
Комментарии195

Разгони свой сайт – автоматическая СКЛЕЙКА + GZIP

Время на прочтение9 мин
Количество просмотров16K
Разгонись

Есть куча советов как убыстрить отдачу сайта – это и статика через nginx и кластеризация и куча еще всяческих хитрых технологий. Однако во всех книжках, советующих как можно повысить загрузку сайтов можно найти две постоянно повторяющиеся темы – «склеивание CSS/JS» и «включение сжатия».
Читать дальше →
Всего голосов 80: ↑60 и ↓20+40
Комментарии85

Impressive Solids: делаем игру на C# под OpenGL, часть II

Время на прочтение15 мин
Количество просмотров15K
Скриншот оформленной игры В первой части разработки тетрисоподобной игры Impressive Solids мы реализовали основную часть геймплея, уделив минимальное внимание внешнему виду приложения. Мы и OpenGL-то почти не использовали, всего и делали, что рисовали цветной прямоугольник. Пришла пора заняться оформлением, а также реализовать подсчёт очков и хранение рекорда (high score). Ну что, поехали дальше.

Picture This


Займёмся текстурами. Нам нужно, во-первых, натянуть что-нибудь на фон окна, а во-вторых, сделать приятно выглядящие блоки (сейчас это просто цветные прямоугольники). Понятное дело, сначала надо изготовить текстуры. В этом нам поможет GIMP. Если у вас нет желания заниматься графикой, можете просто скачать архив с готовыми текстурами и переходить к следующему этапу.

Но сперва отмечу один очень важный нюанс. До версии OpenGL 2.0 каждый из размеров текстуры обязан был быть равным степени двойки (т. е. 64×64, 512×256; это POT-текстуры, от англ. power of two). Если текстуры произвольного размера (NPOT-текстуры) не поддерживаются видеокартой или драйвером видеокарты, такая текстура не будет работать. Это имеет место, например, для встроенных видеокарт Intel под Windows XP.

Чтобы гарантированно обезопасить себя от этой проблемы, самое простое и удобное решение — всегда использовать POT-текстуры. Однако это не всегда возможно, и дальше, когда мы дойдём до вывода текста, нам придётся заняться этим моментом.

Читать дальше →
Всего голосов 31: ↑25 и ↓6+19
Комментарии21

Impressive Solids: делаем игру на C# под OpenGL, часть I

Время на прочтение12 мин
Количество просмотров31K

Once Upon a Time in America


Когда-то, году в 2002-м, на мой компьютер попала интересная игрушка, так сказать, класса тетриса (подробное описание геймплея приведено ниже); она очень полюбилась моей маме, которая играла в эту игру часами. Однако был досадный недостаток: после, кажется, 10 запусков игра начинала требовать регистрацию, которая, что удивительно, была бесплатной, но через интернет, что, само собой, являлось непреодолимым препятствием, поскольку интернета-то никакого тогда в наших краях в глаза не видывали, хоть и слыхали, что есть такая штука. Приходилось постоянно переустанавливать.



Через года три, когда интернет уже провели, а игра успела стать shareware и начать просить за регистрацию сколько-то денег, я попробовал её зарегистрировать, однако сайт производителя был к тому времени скорее мёртв, чем жив, и, по-видимому, остаётся таким и по сей день. В интернете легко находится shareware-версия игры, множество, не побоюсь этого слова, кейгенов, являющихся на самом деле троянами, и ни одной возможности зарегистрировать игру, чтобы мама могла в неё играть уже совсем на другом компьютере. В какой-то момент я подумал: а почему бы просто самому не сделать аналогичную игру и решить тем самым проблему на корню? Заодно из этого может получится какой-никакой hello-world по разработке простой игры для ПК в современных условиях — который я и предлагаю вниманию читателей.


Читать дальше →
Всего голосов 59: ↑53 и ↓6+47
Комментарии39

Информация

В рейтинге
Не участвует
Откуда
Израиль
Зарегистрирован
Активность