Как стать автором
Обновить
0
0

Пользователь

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

Как я имплантировал RFID себе в руку, а потом еще NFC. Часть 1

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


Мне всегда нравилась идея ключа, который невозможно забыть. А если при этом ключ еще и подходит к стандартным замкам — прекрасно вдвойне.

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

А когда обнаружилась метка, совместимая с NFC — и способная быть ключом к ноутбукам, смартфонам и оставшимся замкам — избегать ее встраивания причин решительно не было.
Что я сделал и как это работает
Всего голосов 86: ↑78 и ↓8+70
Комментарии156

Левитрон

Время на прочтение1 мин
Количество просмотров28K
Одна из самых популярных и увлекательных магнитных игрушек это конечно левитрон.

image
ничего вроде бы сложного — пара кольцевых магнитов и очень тонкая настройка

Читать дальше →
Всего голосов 116: ↑114 и ↓2+112
Комментарии88

Удар в корпус: сколько логики в современных компьютерных кейсах?

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


Внимание! Под катом 35 фотографий.

Человечеству свойственно идти по пути наименьшего сопротивления. Это логично? Да. Да не совсем. Экстенсивное развитие должно идти в ногу с интенсивным, иначе начинается форменный цирк. В IT-индустрии этот цирк наблюдается с завидной регулярностью. Стоит какому-нибудь производителю найти удачный маркетингово-технологический ход, как на эту дырдочку набрасываются всей шарой и начинают качать из нее так, что засасывают в насосы друг друга. Клинический пример – пресловутые «иксы» на CD-ROM’ах: производители доигрались до того, что юзерам пришлось писать программы-замедлялки их 52-иксовых шумелок-тормозилок. И только Plextor додумались рискнуть и выпустить писалку, которая использовала резервную область диска и умудрялась прожигать 1 Гб на стандартную болванку.

Читать дальше →
Всего голосов 135: ↑123 и ↓12+111
Комментарии144

Конвертируем Selenium веб-драйвер для Python 3.x

Время на прочтение3 мин
Количество просмотров2.7K
Итак, вы задались целью отладить своё веб-приложение. Вам хочется, чтобы браузер «сам тыкал» на кнопочки, ходил по ссылкам и при этом ещё и проверял состояние элементов. Словом хочется вам интеграционного тестирования, чтобы некий скрипт задавал сценарий действий пользователя и при этом параллельно проверял состояние элементов и изменения в базе данных.

Допустим вы находите или где-то уже слышали, или даже давно хотели попробовать специальный инструментарий для этих дел, зовущийся Selenium WebDriver. Вы идёте на сайт Selenium и радостно прыгаете от восторга: поддерживается ваш любимый скриптовый язык Python! Но увы, как и в случае с Django у разработчиков ещё не дошли руки до Python 3.x. Так что все вкусные синтаксические куски рафинада, а также встроеная поддержка UTF-8 по умолчанию не поддерживаются.

Однако, вооружившись знаниями о различиях между Python 2 и 3, а также стандартной утилитой 2to3.py мы в два счёта поборем всё то, что мешает нашему счастью и всеобщему прогрессу в разработке тестовых скриптов для интеграционного тестирования.
Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии3

Пишем простой плагин для Sublime Text 2

Время на прочтение3 мин
Количество просмотров33K
Введение

Странно, но поискав на Хабре упоминания текстового редактора Sublime Text 2 я почти ничего не нашел. Спешу исправить положение и рассказать хабраюзерам об этом прекрасном инструменте. Вначале очень коротко расскажу о том чем же он так хорош, потом напишем простой но полезный плагин.
Читать дальше →
Всего голосов 55: ↑55 и ↓0+55
Комментарии47

Как должна работать компания по web-программированию

Время на прочтение7 мин
Количество просмотров16K
imageИстория этой статьи началась лет как минимум семь назад когда поработав в одной немецкой web-компании я перешла под крылышко крупного конечного заказчика и начала работать удаленно.

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

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

И вот тогда в конечном итоге решилась эти само собой разумеющиеся, очевидные для меня вещи оформить в такой себе «манифест» (хе-хе), концепцию, описание и список того, без чего, имхо, работать компании не стоит. Уточню, что речь пойдет не о работе с клиентом, не о менеджменте как таковом, не о деньгах и бизнес-планах, а об организации работы небольшой фирмы разработчиков под веб (и, возможно, не только под веб), о том, что надо делать, чем важно заниматься чтобы работать успешно и развиваться.
Читать дальше →
Всего голосов 88: ↑72 и ↓16+56
Комментарии60

Отказоусточивый прокси-сервер на базе Squid в домене Windows

Время на прочтение7 мин
Количество просмотров46K
UPD: различия в потреблении памяти между моей конфигурацией и той, которая используется у авторов негативных комментариев, вызваны тем, что со Squid'ом помимо стандартного скрипта wbinfo_group.pl, с помощью которого определяется принадлежность доменного пользователя доменной группе, используется скрипт, который определяет сам логин пользователя для того, чтобы squid умел предоставлять пользователю права, отличающиеся от тех прав, которые предоставлены его группе.

imageОднажды дождливым серым вечером у меня появилась потребность внедрить прокси-сервер, но не простой, а такой, который бы обладал следующим функционалом:
  • предоставление/ограничение доступа в зависимости от членства учетной записи в определенной группе Active Directory;
  • предоставление/ограничение доступа в зависимости от прав, предоставленных учетной записи (например, чтобы можно было всей группе разрешить пользоваться поисковиками, а одному самому хитрому пользователю этой группы отключить строго определенный поисковик);
  • предоставление доступа без всяких ограничений для «VIP» MAC-адресов;
  • предоставление доступа к минимальному набору ресурсов всем пользователям (и недоменным в том числе);
  • количество движений, которые должен выполнить пользователь для работы с прокси-сервером, должно быть сведено к минимуму;
  • администрирование прокси-сервера производится посредством веб-интерфейса;
  • совокупная стоимость владения данным прокси-сервером должна быть минимальной.

Тех, кому интересна длинная история метаморфоз, превративших один компьютер в супермонстра, приглашаю под кат
Всего голосов 36: ↑33 и ↓3+30
Комментарии57

HTML5 File API: множественная загрузка файлов на сервер

Время на прочтение7 мин
Количество просмотров86K
Когда передо мной в очередной раз встала задача об одновременной загрузке нескольких файлов на сервер (без перезагрузки страницы, само собой), я стал блуждать по интернетам в поисках довольно корявого jQuery-плагина, который позволяет имитировать ajax-загрузку файла (того самого плагина, который со скрытым фрэймом: от java- и flash- плагинов сразу было решено отказаться). В процессе поиска я вспомнил, что в грядущем стандарте html 5 возможности по работе с файлами должны быть существенно расширены, и часть этих возможностей доступна уже сейчас. В итоге было решено опробовать их в действии.

Рассматривать возможности File API будем на примере одновременной загрузки нескольких картинок на сервер. В конце статьи приводится готовое решение, оформленное в виде jQuery-плагина.
Читать дальше →
Всего голосов 109: ↑103 и ↓6+97
Комментарии57

Пять способов вызвать функцию

Время на прочтение5 мин
Количество просмотров368K
Мне часто приходится сталкиваться с JavaScript-кодом, ошибки в котором вызваны неправильным понимаем того, как работают функции в JavaScript (кстати, значительная часть такого кода была написана мной самим). JavaScript — язык мультипарадигменный, и в нем имеются механизмы функционального программирования. Пора изучить эти возможности. В этой статье я расскажу вам о пяти способах вызова функций в JavaScript.
Читать дальше →
Всего голосов 142: ↑133 и ↓9+124
Комментарии84

Команда dd и все, что с ней связано

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

В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. На первый взгляд — ничего выдающегося, но если рассмотреть все возможности этого универсального инструмента, то можно выполнять довольно сложные операции без привлечения дополнительного ПО, например: выполнять резервную копию MBR, создавать дампы данных с различных накопителей, зеркалировать носители информации, восстанавливать из резервной копии данные на носители и многое другое, а, при совмещении возможностей dd и поддержке криптографических алгоритмов ядра Linux, можно даже создавать зашифрованные файлы, содержащие в себе целую файловую систему.
Опять же, в заметке я опишу самые часто используемые примеры использования команды, которые очень облегчают работу в UNIX системах.
Читать дальше →
Всего голосов 323: ↑315 и ↓8+307
Комментарии119

Разновидности TeX

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

Введение


Я не нашёл упоминаний на хабре про xetex, lualatex которые в кратком, сжатом виде рассказывали о том что это такое. Поэтому таким образом появилась данная идея: написать кратко об основных системах вёрcтки. И так начинаем по порядку.
Читать дальше →
Всего голосов 29: ↑23 и ↓6+17
Комментарии16

Новый программерский жаргон

Время на прочтение7 мин
Количество просмотров50K
Посетителям сайта stackoverflow.com был задан вопрос: «Какие программерские термины вы придумали, так чтобы они стали популярны в ваших кругах (то есть вы слышали, что кто-то их повторяет)?

Ниже — вольный перевод самых популярных ответов.

Читать дальше →
Всего голосов 411: ↑373 и ↓38+335
Комментарии193

Система непересекающихся множеств и её применения

Время на прочтение10 мин
Количество просмотров70K
Добрый день, Хабрахабр. Это еще один пост в рамках моей программы по обогащению базы данных крупнейшего IT-ресурса информацией по алгоритмам и структурам данных. Как показывает практика, этой информации многим не хватает, а необходимость встречается в самых разнообразных сферах программистской жизни.
Я продолжаю преимущественно выбирать те алгоритмы/структуры, которые легко понимаются и для которых не требуется много кода — а вот практическое значение сложно недооценить. В прошлый раз это было декартово дерево. В этот раз — система непересекающихся множеств. Она же известна под названиями disjoint set union (DSU) или Union-Find.

Условие


Поставим перед собой следующую задачу. Пускай мы оперируем элементами N видов (для простоты, здесь и далее — числами от 0 до N-1). Некоторые группы чисел объединены в множества. Также мы можем добавить в структуру новый элемент, он тем самым образует множество размера 1 из самого себя. И наконец, периодически некоторые два множества нам потребуется сливать в одно.

Формализируем задачу: создать быструю структуру, которая поддерживает следующие операции:

MakeSet(X) — внести в структуру новый элемент X, создать для него множество размера 1 из самого себя.
Find(X) — возвратить идентификатор множества, которому принадлежит элемент X. В качестве идентификатора мы будем выбирать один элемент из этого множества — представителя множества. Гарантируется, что для одного и того же множества представитель будет возвращаться один и тот же, иначе невозможно будет работать со структурой: не будет корректной даже проверка принадлежности двух элементов одному множеству if (Find(X) == Find(Y)).
Unite(X, Y) — объединить два множества, в которых лежат элементы X и Y, в одно новое.

На рисунке я продемонстрирую работу такой гипотетической структуры.


Как такое сделать и зачем оно нужно
Всего голосов 114: ↑109 и ↓5+104
Комментарии29

8 правил инноваций от Тайлера

Время на прочтение3 мин
Количество просмотров42K
Тайлер ДёрденВсем нам хотелось бы совершать значительные поступки и прожить выдающуюся жизнь.
Никто не хочет целыми днями производить приевшиеся товары в бесцельной гонке за несуществующего потребителя. Ну и уж само собой, что вы лично этого не хотите, не так ли?
Так почему же нам кажется, что сломать рутину и начать заниматься чем-то принципиально новым, так сложно? Потому что это действительно сложно: от нас требуется сменить приоритеты, поменять свои планы и разрушить комфортную жизнь. Это почти то же самое, что стать другим человеком.

«Бойцовский клуб» — фильм о том, как прожить ту жизнь, которую хочешь, и какой тернистый путь нужно пройти, чтобы это стало возможным. Тайлер помогает безымянному герою фильма встать на путь просветления. Возможно, слова Тайлера смогут помочь и кому-то из нас.
Читать дальше →
Всего голосов 201: ↑153 и ↓48+105
Комментарии120

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность