Pull to refresh
2
0.5
kalbas @kalbas

User

Send message

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

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

Читать дальше →
Total votes 121: ↑115 and ↓6+109
Comments53

Кодовый замок на Arduino за 20 минут

Reading time3 min
Views78K


Предыстория


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

Порывшись на китайских барахолках и ebay я ничего дешевого и более-менее серьезного не нашел и решил сделать его своими руками. Оговорюсь сразу, что платформа Arduino была выбрана за свою простоту, так-как опыта общения с микроконтроллерами не было вообще.
Читать дальше →
Total votes 91: ↑87 and ↓4+83
Comments92

Coder vs. Developer vs. Engineer — а какой Job Title у тебя, %username%?

Reading time12 min
Views69K
Computer Scientist, Software Engineer и Coder заходят в бар.
— О, а вот и программисты! — окликает их бармен...


Я знаю людей, которые программируют уже не один десяток лет, но обижаются, когда их называют "программистами". А по запросу Coder vs Developer vs Software Engineer в гугле находится 113 000 000 ссылок: 1 2 3 4 5 6 7 8 9 … 113 000 000. Что интересно, можно найти совершенно противоположные мнения об одном и том же. С чем-то я согласен, а с чем-то в корне нет.

Последние же несколько лет так вообще постоянно подливают масло в огонь, появляются какие-то совсем странные программисты, которые называют себя Creative Technologist, Creative Coder и Interactive Developer.

Давайте же попробуем разобраться.
Читать дальше →
Total votes 148: ↑132 and ↓16+116
Comments129

Топ-5 самых впечатляющих книг, которые должен прочесть каждый разработчик ПО

Reading time3 min
Views379K
Не так давно промелькнула ссылка на достаточно свежее (осень 2011) англоязычное голосование со скромным названием "самая впечатляющая книга, которую должен прочесть каждый разработчик программного обеспечения" и описанием:

Если бы вы могли вернуться в прошлое, к самому началу своей карьеры разработчика и сказать самому себе: «прочитай именно эту книгу», в самой начале своей карьеры разработчика, какую бы книгу вы рекомендовали?

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

Однако в данном небольшом посте я возьму на себя смелость перечислить ТОП-5 тех самых книг, победивших в голосовании, переведенных на русский язык. И дать небольшие комментарии, ведь книги действительно этого достойны. Да, лично я бы поменял некоторые места, однако положимся на «мнение зала» ресурса Stack Overflow.
Читать дальше →
Total votes 236: ↑219 and ↓17+202
Comments182

Колхозный макрообъектив, или переворачиваем штатник

Reading time3 min
Views17K
Ниже я расскажу как сделал макрообъектив из штатного Canon 18-55/ 3.5-5.6 IS. Для этого объектив был перевёрнут (передней линзой к матрице) и была вынесена контактная площадка для управления объективом с тушки.

Читать дальше →
Total votes 59: ↑53 and ↓6+47
Comments62

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

Reading time3 min
Views36K
Пару месяцев назад взялся я за изучение Python. Прочитав про используемые структуры, работу со строками, генераторы, основы ООП, размышлял какую полезную программу написать, что бы это все применить на реальной задаче.
По счастливому стечению обстоятельств ко мне обратились знакомые с просьбой скачать мультфильм «Чудеса на виражах».
Читать дальше →
Total votes 60: ↑44 and ↓16+28
Comments35

Паттерн Наблюдатель: списки и матрёшки из слушателей

Reading time6 min
Views24K
В этой хабрастатье на примере паттернов Наблюдатель и Компоновщик рассмотрено, как применять принципы объектно-ориентированного программирования, когда стоит использовать композицию, а когда наследование. А так же рассмотрено, какие существуют способы повторного использования кода, кроме copy-paste.

Статья достаточно простая, в ней рассматриваются очевидные вещи, но надеюсь, что она будет интересна начинающим программистам, которые пока встречались со словами из первого абзаца только на лекциях по программированию. (На самом деле эта статья и есть кусочек практического занятия по программированию.)
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments16

Оптимизация расхода батареи

Reading time5 min
Views23K
image

Введение


В этой статье приводится несколько советов по оптимизации расхода батареи приложениями.
Отключая фоновые сервисы обновлений при потере соединения или уменьшая частоту обновлений при низком уровне заряда батареи можно существенно минимизировать влияние работы приложения на батарею.
Некоторые фоновые сервисы (загрузка из сети обновлений или контента приложения, сложные расчеты и т.д.) целесообразно отключать или снижать частоту их запуска при низком уровне заряда батареи. Для подобных действий важно принимать во внимание несколько факторов, как, например, текущее состояние зарядки устройства, наличие подключенной док-станции или наличие соединения с сетью. Ниже представлены способы получения этих значений и мониторинга их изменений.
Читать дальше →
Total votes 52: ↑49 and ↓3+46
Comments12

327 000 рублей от государства? Пожалуйста!

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

В настоящее время программа государственного субсидирования самозанятости предоставляет возможность гражданину, состоящему на учете в центре занятости населения в качестве безработного, организовать свое дело и получить наиболее крупную единовременную субсидию (до 30 МРОТ).

Возможно, вам будет интересно узнать, как именно обычный человек из простого российского города может вот так взять и получить субсидию на развитие своего дела в размере 327 000 рублей.
Сколько времени и сил было потрачено, какие препоны стояли на пути к достижению цели — обо всем вкратце будет рассказано под катом.
Читать дальше →
Total votes 118: ↑91 and ↓27+64
Comments167

Делаем приватный монитор из старого LCD монитора

Reading time2 min
Views972K


Вы наконец-то можете сделать кое-что со своим старым LCD монитором, который завалялся у Вас в гараже. Превратите его в шпионский монитор! Для всех вокруг он будет выглядеть просто белым экраном, но не для Вас, потому что у Вас будут специальные «волшебные» очки.

Всё что Вам нужно – это пара старых очков, нож для бумаги и растворитель для краски.

Читать дальше →
Total votes 1486: ↑1468 and ↓18+1450
Comments327

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

Reading time6 min
Views672K
На 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/

Подробный и обстоятельный ответ
Total votes 141: ↑136 and ↓5+131
Comments41

Организация текучих (fluent) интерфейсов в Python

Reading time4 min
Views5.6K
Вдохновлённый недавним постом про текучие интерфейсы на PHP, я сразу задумался как можно реализовать подобное на питоне проще и красивее (на питоне всегда всё проще и красивее). Предлагаю несколько способов в порядке поступления мыслей.



Читать дальше →
Total votes 63: ↑61 and ↓2+59
Comments34

Почему ИТшнику стоит стать ИПшником и почему не стоит регистрировать ООО

Reading time7 min
Views86K
В этой статье даются ответы на нижеследующие вопросы, основываясь на личном опыте и опыте коллег.

1. Почему стоит начать работать «в белую»
2. Почему на начальном этапе ИП лучше ООО
3. Что делать, если партнёров несколько

Если вы – начинающий или уже опытный фрилансер и подумываете о работе «в белую», но ещё точно не определились с вопросами «Стоит ли оно того?» и «ИП или ООО?», вэлком
под кат
Total votes 371: ↑361 and ↓10+351
Comments183

Опыт регистрации ИП для ведения бизнеса связанного с ИТ

Reading time3 min
Views31K
Однажды решив зарегистрироваться как ИП я столкнулся к несколькими неожиданными проблемами, о которых в интернете не могу найти практически никакой информации. Знакомая бухгалтер, консультирующая меня, тоже не слышала о подобных проблемах, поэтому решился на написание данного топика, чтобы помочь коллегам не попасть в подобную ситуацию.
Основные пункты «обязательной программы» регистрации много раз разжеваны в интернете, но пройдемся по ним заново, используя собственный опыт. Я специально не буду давать ссылки на программы, формы бланков и постановления, так как они быстро устаревают и смысла выкладывать их я не вижу. К тому же принятое заявление в Тамбове, могут не принять в другой налоговой и т.д.
Еще в моем случае нет наемных работников, это важно для прохождения «квеста».
Читать дальше →
Total votes 64: ↑60 and ↓4+56
Comments184

Сила и красота декораторов

Reading time5 min
Views83K
Одним из самых сложных для понимания и осознания элементов языка является декоратор, хотя по сути это очень простая вещь, доступная для понимания даже начинающему программисту. Новых Эверестов я не открываю, а лишь предлагаю краткий обзор возможностей и несколько типичных примеров использования. Этакий короткий экскурс в метапрограммирование на питоне.

Upd 1: изменил несколько категоричное утверждение о несходстве паттерна Декоратор и одноимённой языковой конструкции на более мягкое.

Читать дальше →
Total votes 98: ↑97 and ↓1+96
Comments30

Библиотека для упрощения HTTP-запросов

Reading time1 min
Views149K
Requests — библиотека Python, которая элегантно и просто выполняет HTTP-запросы. Теперь не нужно осваивать urllib2 с излишне сложными программными интерфейсами.

Вот как выглядит HTTP-запрос с авторизацией с помощью requests:

>>> r = requests.get('https://api.github.com', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json'
Читать дальше →
Total votes 133: ↑117 and ↓16+101
Comments32

Ликбез по уязвимостям в веб-приложениях, а также самые частые ошибки разработчиков

Reading time7 min
Views38K


Эта статья — продолжение цикла статей по информационной безопасности в веб-приложениях (и не только).

Вообще думал написать о «белом ящике», но я решил что нужно сначала ликвидировать возможные пробелы у целевой аудитории (в основном веб-разработчики) в этой области.

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

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

Как обычно — ответственность за все полученные знания только на читателе :)

Читать дальше →
Total votes 171: ↑150 and ↓21+129
Comments75

«Рамблер» объединяет контакты пользователей

Reading time2 min
Views23K
Друзья!

Сегодня объединенная компания «Афиши» и «Рамблера» запустила в публичное beta-тестирование коммуникатор «Рамблер-Контакты». Новый продукт объединяет контакты из различных интернет-сервисов и предоставляет все возможности для общения — в одном приложении.

«Рамблер-Контакты» позволяют пользователю общаться через единый интерфейс с друзьями из различных социальных сетей и мессенджеров. Сегодня это «ВКонтакте», Facebook, ICQ, Mail.ru «Агент», Google Talk, «Я.Онлайн», QIP, Jabber. Не важно, на какой аккаунт или сервис было отправлено сообщение. Если пользователь подключил свои учетные записи к «Рамблер-Контактам», то сможет всегда оставаться на связи.

image
Читать дальше →
Total votes 88: ↑78 and ↓10+68
Comments319

Размышления о привязке «Войти через...» к одному аккаунту

Reading time5 min
Views19K
Постановка проблемы

Некоторое время назад по долгу службы работы, встал на обсуждение вопрос «А нужно ли делать на новом проекте авторизацию через сторонние сервисы?». Мозг, взбудораженный красивыми всплывающими окошками, виджетами и прочими украшательствами, призывно требующими «Войди через меня!», конечно же обеими руками был за, да и современные вебдванольные (а то и, тьфу тьфу, вебтринольные, быть может?) тенденции развития крупных порталов, как бы, намекают. Однако, я не зря сказал, что началось всё с обсуждения, ибо, где есть споры, там есть и камни преткновения. Такой камень мы нашли и здесь.

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

Казалось бы, какая разница, регистрировать аккаунт на сайте, или входить через внешние ресурсы?
Читать дальше →
Total votes 88: ↑77 and ↓11+66
Comments218

О том, как я заставлял Ubuntu работать 10 часов от батареи

Reading time11 min
Views192K
imageЯ являюсь рядовым линукс-пользователем и поэтому не стоит от этой статьи ожидать очень умных ходов или нестандартных программистских решений. Все по мануалам. Но раз результат достигнут, значит кому-то кроме меня это может оказаться полезным.

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

Устанавливал я Ubuntu 10.10 на ноутбук Acer Aspire Timeline 5810TG. Эта машина обладает экраном в почти 16 дюймов и относительно производительным железом, зато батарея достаточно емкая, чтобы ставить с ней личные рекорды.
Читать дальше →
Total votes 296: ↑285 and ↓11+274
Comments124

Information

Rating
1,688-th
Location
Белгород, Белгородская обл., Россия
Registered
Activity