Архив за 28 августа 2013 - 2

Доброго времени суток! Пару недель назад зачесались руки гика — захотелось мне приобрести довольно нашумевший и всем известный одноплатный мини-компьютер Raspberry Pi. Модель была выбрана самая «крутая» — версия «B» с 512Mb ОЗУ на борту. История о покупке и первичной настройке не подходит к теме этого поста, тем более, что её можно прочитать вот здесь.

Этот пост о другом. После всех манипуляций с настройкой захотелось попробовать машинку, так сказать, «в деле». Идея возникла практически сразу. Дома у меня имеется 3 компьютера, 2 смартфона, бюджетный роутер, и внешний жёсткий диск на 2Tb — Seagate Expansion External. Интерфейс подключения у HDD — USB. Роутер из разъёмов имеет только Ethernet и дырку для шнура электропитания. Все мои устройства соединяются с роутером только по WiFi, и ни одно не может работать в постоянном режиме. Но тут появляется Raspberry. Миниатюрные размеры платы позволяют разместить систему вида [HDD<=USB=>RPi<=Ethernet=>DIR300NRU(роутер)<=WiFi=>LAN] прямо на подоконнике и использвать диск в локальной сети, а её мизерное энергопотребление позволяет держать включенной практически постоянно. RPi работает под управлением семейства ОС Linux, а именно я на неё установил Raspbian. Казалось бы, поставить сервер samba и расшарить диск… но это было бы слишком просто. Конечная задача усложнилась: необходимо делать внешний диск доступным в локальной сети, только в том случае, если мой смартфон к этой сети в данный момент подключён, иначе диск размонтировать, тем самым снижая на него нагрузку и его энергопотребление. Значит писать будем демон, и писать будем на Python. Поехали!
Читать полностью »

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

По мнению сторонников отмены софтверных патентов, отсутствие интеллектуальной собственности в этой области только поощрит инновации. «Уточнив список того, что подлежит патентованию, мы даём новозеландским компаниям большую гибкость для адаптации и улучшения существующих изобретений, продолжая при этом защитить подлинные инновации», — сказал министр торговли Крейг Фосс (Craig Foss).

Решение законодателей приветствовали представители Института ИТ-профессионалов (IITP), которые отметили знаменательный день, когда «старые законы встретились с современными технологиями» и вышли победителями на благо разработчиков.
Читать полностью »

Компания Dell пополнила свой ассортимент сразу тремя новыми сенсорными мониторами: E2014T, P2314T и P2714T. Вся тройка устройств располагает набором портов из DisplayPort 1.2, HDMI (MHL), VGA и USB и распознают до 10 одновременных касаний (младшая до пяти).

Младшая модель располагает экраном (TN-Film) диагональю 19,5 дюйма разрешением 1600 х 900 точек. Монитор характеризуется яркостью 250 кд/кв.м, контрастностью 1000:1 и временем отклика 2 мс.

Dell E2014T, P2314T и P2714T

Читать полностью »

Компания Logitech представила свой новый манипулятор Magic Mouse Ultrathin Touch Mouse. Устройство располагает сенсорной панелью, способной распознавать жесты. Благодаря этому сценарии использования новинки предполагают изменение масштаба, перелистывание и другие функции, обычно присущие тачпаду. Поддерживается как ОС Windows, так и OS X.

Читать полностью »

Disclaimer

В детстве, как и у многих, родившихся в 80-х, у меня была приставка Dendy. Клон японской FamiCon, подаренный нам добрыми китайцами, и распространяемый небезызвестной Steepler, раскрасил в яркие цвета детство многих из поколения 80-х. Раз за разом, проходя полюбившиеся мне игры вдоль и поперек, находя все возможные секреты (причем, зачастую, без книжек с громкими заголовками в духе «Секреты и прохождения 100500+1 игр», ценность которых стремилась к нулю), мне хотелось играть в них еще и еще, но с новыми уровнями, новыми секретами и новыми возможностями.

Некоторые игры предусматривали встроенный редактор уровней (например, Battle City, Fire'n'Ice aka Solomon's Key 2), но большинство из них, разумеется, таковой возможности не предоставляли. Хотелось сыграть (естественно!) в новый Super Mario Bros (о, как я любил и ненавидел китайцев, выпустивших картридж 99...9 in 1, в котором были уровни A-1, B-1,… Z-1, которые невозможно было пройти, или которые представляли собой дубли оригинальных уровней, но с измененными текстурами), Duck Tales 1, 2 и многие другие.

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

Между тем, редакторы на одни игры находились чуть ли не по первым ссылкам в гугле, на другие же были запрятаны либо где-то далеко (но находились таки), либо отсутствовали вовсе. Найдя редакторы для большинства любимых мной игр, я никак не мог найти редактор для Персидского принца. Да, есть редакторы для DOS-версии, есть для SNES, но моя родная, — NES-версия, была обделена таким сокровищем.

Различного рода ресурсы по NES и ее эмуляции не очень охотно поддавались моему пониманию и я так и оставался где-то на уровне нуба.

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

Начал я… Впрочем, перед тем, как я начну рассказывать далее, предостерегу:
Не рекомендуется лезть под кат профессионалам. Там рассматриваются «живодерские» методы новичка! Работа Вашей нервной системы может быть необратимо нарушена! Я предупредил.

Читать полностью »

Новое просветляющее покрытие и диафрагма скругленной формы — это общие черты новых объективов, которые представила компания Ricoh Imaging. В серию HD Pentax DA Limited вошли модели HD Pentax DA 15mm F4 ED AL Limited, HD Pentax DA 21mm F3.2 AL Limited, HD Pentax DA 35mm F2.8 Macro Limited, HD Pentax DA 40mm F2.8 Limited и HD Pentax DA 70mm F2.4 Limited. Строго говоря, это не совершенно новые модели, а модернизированные версии моделей, которые уже были в ассортименте компании.

Deutsche Bank открывает набор во вторую Java школу
Этой весной Центр разработки Deutsche Bank успешно запустил обучающую программу «Java Школа», по окончании которой 12 студентов стали сотрудниками компании и сейчас работают над существующими проектами.
Немного статистики по результатам данного проекта — из 400 человек, подавших заявки, 80 прошли на интервью. Всего по результатам отбора в Школу поступили 17 человек и 12 стали нашими сотрудниками.

Учитывая положительный опыт мы решили продолжить эту традицию и сейчас объявляем о втором наборе в Школу программистов, занятия в которой начнутся в ноябре. C первого дня обучения вы становитесь сотрудником Центра разработки и будете получать заработную плату в размере 100 000 рублей gross.
Подробнее о программе на сайте: www.db.com/russia/ru/content/1780.htm
Читать полностью »

Изначально в нашем IMAP-сервере использовался epoll-реактор собственной разработки. Как всегда, в процессе эксплуатации и роста нагрузки потихоньку набегают замечания, в результате чего со временем начинает накапливаться технический долг и замедляться разработка.

В нашем случае были также изначальные архитектурные замечания.

  • Поток, обслуживающий реактор, никак не контролировался и при поступлении контрольных сигналов мог произойти race-condition. С другой стороны, останавливать или замедлять этот поток нельзя, поэтому возможные пути обхода выглядели неприемлемыми.
  • Реактор не умел работать в full-duplex режиме. Это ограничивало его использование только интерактивными протоколами, каким является IMAP. Однако между серверами мы часто используем протокол IProto, который подразумевает full-duplex связь.

Лирическое отступление про IProto: протокол очень простой: заголовок из трёх полей типа uint32_t: команда, номер пакета, длинна данных. За счет поля «номер пакета» сервер может отвечать на запросы в любом порядке, а клиент может ждать ответа в асинхронном стиле и слать следующий запрос. В Mail.Ru Group он используется повсеместно — начиная с нашей Tarantool, и заканчивая сервисом антибрутфорса.

Поэтому было решено сделать тестовую версию, используя boost::asio. В этом посте я расскажу о переезде на реактор boost::asio, о его преимуществах и о подводных камнях, с которыми мы столкнулись.

Читать полностью »

Rails предоставляют нам 4 различных способа загрузки ассоциаций: preload, eager_load, includes и joins. Рассмотрим каждый из них:

Preload

Этот метод загружает ассоциации в отдельном запросе:

User.preload(:posts).to_a

# =>
SELECT "users".* FROM "users"
SELECT "posts".* FROM "posts"  WHERE "posts"."user_id" IN (1)

Т.к. preload всегда создает два отдельных запроса, то мы не можем использовать таблицу posts в условии выборки:

User.preload(:posts).where("posts.desc='ruby is awesome'")

# =>
SQLite3::SQLException: no such column: posts.desc:
SELECT "users".* FROM "users"  WHERE (posts.desc='ruby is awesome')

А таблицу users – можем:

User.preload(:posts).where("users.name='Neeraj'")

# =>
SELECT "users".* FROM "users"  WHERE (users.name='Neeraj')
SELECT "posts".* FROM "posts"  WHERE "posts"."user_id" IN (3)

Читать полностью »

Итак, первый серьёзный (по нашим меркам) тираж железок успешно прошёл приёмку нами на заводе и официальную растаможку в России. Процент брака основных плат зашкалил за нуль и составил 0.5%. Очень неплохо, мы рассчитывали в худшем на 5-6 процентов брака. К слову, есть мысль отдать одну бракованую железку BarsMonster на вскрытие проца (если он заинтересуется, само собой).

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

В общем, железки уже у нас на руках, теперь начинается самое интресное

Виртурилки прилетели!
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js