Играем в Pacman на любимой улице

1 апреля Google традиционно отмечает шуткой. В этот раз на Google maps можно сыграть в Pacman. Просто откройте карту и нажмите на значок в нижнем левом углу. Приятной игры.
image

Pacman

image

ссылка на оригинал статьи http://geektimes.ru/post/248180/

Певец Iron Maden ищет инвесторов для своего дирижабля

image
Брюс Дикинсон на фоне своего проекта

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

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

К сожалению, после знаменитой и трагической кончины Гинденбурга, который унёс с собой жизни 36 человек, люди стали бояться дирижаблей и их развитие остановилось. Интересно, что это даже не была крупнейшая по количеству жертв катастрофа – при крушении американского дирижабля USS Akron погибло 73 человека, при том, что он был наполнен гелием, а не водородом, как Гинденбург. Ещё одна знаменитая авария произошла с британским дирижаблем R101 (48 жертв), который был построен на верфях Кардингтона.

Существующие сейчас дирижабли используются в научных или увеселительных целях. Но некоторые энтузиасты хотят это изменить. Один из них – ни кто иной, как Брюс Дикинсон, лидер группы Iron Maden. Его детище сейчас находится как раз в одном из ангаров Кардингтона, где почти 100 лет назад начали строить дирижабли. Мечта Дикинсона – возобновление пассажирских и грузоперевозок, и тысячи дирижаблей в небе планеты. Поэтому он стал со-инвестором компании Hybrid Air Vehicles, основанной изобретателем Роджером Мунком.

image

Дирижабль Airlander 10 был изначально изготовлен по заказу американских военных. Компания выиграла полумиллионный контракт на постройку гибридного летательного аппарата с целью ведения наблюдений с воздуха. После того, как у военных кончились деньги, Hybrid Air Vehicles выкупила опытный образец, и перегнала его обратно в Англию.

Гибриды имеют форму крыла, что придаёт им подъёмную силу. Они тратят чуть больше топлива, чем классические дирижабли, зато имеют большую скорость передвижения, сохраняя преимущества аппаратов легче воздуха – в частности, возможность приземлиться на любое достаточно плоское место.

Airlander 10 может двигаться со скоростью до 160 км/ч, а разгоняют его четыре двигателя, расположенные сзади. Подъёмную силу ему придают форма в виде крыла и 38000 кубометров гелия.

image

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

Брюс Дикинсон делится мыслями по поводу затеи: «Я не ожидаю, что скоро получу прибыль от своего вложения. Я просто хочу быть частью этого проекта. Как рок-звезда, я мог бы тратить деньги на наркотики или роскошные автомобили – или же я могу сделать что-то полезное. В жизни редко случаются моменты, когда ты можешь принять участие в чём-то большом».

Теперь же Hybrid Air Vehicles ищут инвесторов, чтобы продвигать свой продукт в массы и развеивать опасения людей по поводу дирижаблей. «Люди говорят – о господи, это ж Гинденбург», — рассказывает Дикинсон. «А на самом деле наш проект – это самый большой в мире огнетушитель».

ссылка на оригинал статьи http://geektimes.ru/post/248178/

Tarantool 1.6 — давай начнем

Не так давно на Хабре была опубликована статья о NoSQL базе — «Tarantool 1.6 от первого лица». Уверен, в своих кругах эта база данных отлично известна и уже завоёвывает популярность. Уверен так же и в том, что есть те начинающие, руки не дошли, кто хотел бы попробовать Tarantool в действии. Именно для таких желающих я приведу несколько простых примеров, помогающих начать знакомиться с этим интересным продуктом. Как понятно из названия статьи — речь идет о версии Tarantool 1.6.

Install

На сайте проекта подробно описаны варианты установки для разных систем. Для Ubuntu выглядит так:

wget http://tarantool.org/dist/public.key sudo apt-key add ./public.key release=`lsb_release -c -s`  cat > /etc/apt/sources.list.d/tarantool.list <<- EOF deb http://tarantool.org/dist/master/ubuntu/ $release main deb-src http://tarantool.org/dist/master/ubuntu/ $release main EOF  sudo apt-get update sudo apt-get install tarantool 

Hello world!

Tarantool использует Lua в качестве встроенного языка (Lua 5.1 на базе on LuaJIT 2.0). Язык lua не сложный, быстро познакомиться с его основами можно здесь или на Хабре в публикации «Lua за 15 минут». Вы можете использовать Tarantool как Lua интерпретатор.

$ /usr/bin/tarantool /usr/bin/tarantool: version 1.6.4-509-ga4af00e type 'help' for interactive help tarantool> 2 + 3 --- - 5 ... tarantool> print ('Ola lua!') Ola lua! --- ... 

Так же вы можете писать свою логику, используя скрипты на Lua. Напишем стартовый init.lua для запуска Tarantool и вывода ‘Hello world’.

Одна из основных библиотек tarantool — box. С помощью box.cfg (в lua {…} — это таблица) создадим конфигурацию запуска:

box.cfg {     listen = 3311,     logger = 'tarantool.log', }  

Tarantool будет запущен на порт 3311 и будет хранить логи в tarantool.log:

Создадим функцию hello()

local function hello()     print ('Hello world!) end  hello() 

Запускаем и видим:

$ tarantool init.lua  Hello world! 

Data Base

В tarantool кортежи хранятся в пространствах (space) — некий аналог таблицы.

Создадим тестовый space и первичный (primary) индекс в нем (можно также строить и вторичный по всем полям записи), используя дерево для хранения индексов:

s = box.schema.space.create('test') p = s:create_index('primary', {type = 'tree', parts = {1, 'NUM'}}) 

Заполним test записями вида {key, number}:

for i = 1, 10 do     s:insert({i, i}) end  

В данном случае объект s ссылка на объект box.space.test. Соответственно, можно было записать:

box.space.test:insert({i, i}) 

Кстати, вы можете столкнуться с такой ошибкой при повторном запуске tarantool:

$ tarantool init.lua  Hello world! main/101/init.lua F> Space 'test' already exists 

Tarantool хранит все свои данные в оперативной памяти. Для их сохранности Tarantool делает снимки состояний (snapshot) и бинарные логи (xlog). Ошибка возникает из-за того, что при старте Tarantool загружает данные с последнего использования с помощью файлов .snap (снимки состояния) и .xlog (по умолчанию в рабочей директории). Соответственно, ваш test space уже присутствует в базе. Вы можете удалять .snap и .xlog при каждом запуске, или же добавить проверку существования пространства.

s =  box.space.test if not s then     s = box.schema.space.create('test')     p = s:create_index('primary', {type = 'tree', parts = {1, 'NUM'}})     for i = 1, 10 do         s:insert({i, i})     end end 

Было бы очень неплохо проверить, сохранились ли наши данные, наша конфигурация в запущенном Tarantool. Для этого предусмотрена консоль для администратора. Вообще, в lua реализация подключения различных модулей, встроенных пакетов, других файлов с кодом происходит через механизм require.

local console = require('console') console.listen(127.0.0.1:3312) 

После запуска Tarantool вы сможете подключится к админской консоли на порту 3312 с использование утилит nc/telnet и rlwrap (для удобства работы). Подключившись, вы можете напрямую работать с Tarantool. Посмотрим, к примеру, данные нашего пространства test:

$ rlwrap nc 0 3312 Tarantool 1.6.4-509-ga4af00e (Lua console)                      type 'help' for interactive help                                box.space.test:select() --- - - [1, 1]   - [2, 2]   - [3, 3]   - [4, 4]   - [5, 5]   - [6, 6]   - [7, 7]   - [8, 8]   - [9, 9]   - [10, 10] ... box.space.test:get(6) --- - [6, 6] ... 

Посмотрим параметры конфигурации нашего Tarantool:

box.cfg

box.cfg --- - snapshot_count: 6   too_long_threshold: 0.5   slab_alloc_factor: 2   slab_alloc_maximal: 1048576   background: false   logger: tarantool.log   slab_alloc_arena: 1   sophia:     page_size: 131072     threads: 5     node_size: 134217728     memory_limit: 0   listen: '3311'   logger_nonblock: true   snap_dir: .   coredump: false   sophia_dir: .   wal_mode: write   slab_alloc_minimal: 64   panic_on_snap_error: true   panic_on_wal_error: true   rows_per_wal: 500000   wal_dir: .   log_level: 5   readahead: 16320   snapshot_period: 0   wal_dir_rescan_delay: 0.1 ... 

Итак, создав space выполним следующую задачу: в записях с ключом > 5 увеличим значение хранимого чиcла на 10.
Для нужной выборки воспользуемся библиотекой box.index.

for k,v in box.space.test.index.primary:pairs(5, {iterator = box.index.GT}) do    s:update(v[1], {{'=', 2, v[2] + 10}}) end 

box.space.index.primary — означает работу с пространством test и его primary индексом.
pairs() — функция итерирования, возвращающая итератор (переменная k в цикле) и таблицу значений (состоит из набора записей v), принимает на вход значение ключа(5) — старта итерирования и тип итератора.
iterator = box.index.GT — итератор GT (greater) возвращает записи с ключами, больше заданного.
update() — обновление записи в базе, принимает значение ключа записи (v[1]),
{‘ = ‘, 2, v[2] + 10} — обозначает обновление (‘=’) второго значения на v[2] + 10.

Посмотрим, используя админскую консоль, значения нашего space:

box.space.test:select() --- - - [1, 1]   - [2, 2]   - [3, 3]   - [4, 4]   - [5, 5]   - [6, 16]   - [7, 17]   - [8, 18]   - [9, 19]   - [10, 20] ... 

Общий код нашего init.lua скрипта:

-- Пример init cкрипта для tarantool  -- Подключение всех необходимых в скрипте модулей -- удобно описывать в начале local console = require('console')  -- Стартуем админскую консоль console.listen('127.0.0.1:3312')  -- Конфигурация tarantool box.cfg {     listen = 3311,     logger = 'tarantool.log', }  local function hello()     print ('Hello world!') end  -- Запуск функции hello hello()  -- Создаем и заполняем тестовый space, если он отсутствует s =  box.space.test if not s then     s = box.schema.space.create('test')     -- Первичный индекс     p = s:create_index('primary', {type = 'tree', parts = {1, 'NUM'}})     for i = 1, 10 do         s:insert({i, i})     end end  -- Увеличим хранящиеся значения во всех записях, где первичный ключ больше 5 for k,v in box.space.test.index.primary:pairs(5, {iterator = box.index.GT}) do    s:update(v[1], {{'=', 2, v[2] + 10}}) end  

Конечно, чтобы полноценно освоить Tarantool, знать его тонкости, нужно читать документацию на сайте проекта. Ведь помимо всего Tarantool — это не только база данных, но еще и lua application server. К примеру, есть http сервер и очереди. Но первый шаг сделан — свой маленький скрипт для Tarantool вы написали.

Еще вы можете почитать про Tarantool (в примерах там более старые версии проекта) в других статьях на Хабре:
«Изучаем Tarantool + Lua»,
«Уникальные возможности Tarantool».

Так же без всякой установки вы можете попробовать Tarantool на try.tarantool.org.

ссылка на оригинал статьи http://habrahabr.ru/post/254533/

Эмиграция русских программистов и предпринимателей может простимулировать IT-бизнес США

Англоязычное издание The Street рассказало о том, что текущие экономические сложности в России могут стимулировать IT-бизнес в США. The Street говорит о том, что «следующий Сергей Брин» скорее всего окажется в США в этом году, если он еще не сделал этого в 2014.

Как замечает издание – основная проблема не только более чем 40% девальвация рубля, но и нестабильная политическая обстановка, в частности из-за ситуации на востоке Украины. Антон Гладкобородов, один из создателей сервиса Coub, сообщил изданию что уже может назвать от пяти до восьми компаний, передислоцировавшихся на территорию США за последнее время. Этот список включает в себя не только обновленный Hopes & Fears, но и сервис ресторанных рекомендаций Luka, попавший в программу акселерации Y-Combinator.

Отдельно Антон отмечает тот факт, что если еще недавно российские молодые компании могли хоть как-то привлекать западное финансирование, то теперь это фактически невозможно.

Многие глобальные компании со штаб-квартирами в США за прошлый год привлекли на работу россиян в качестве сотрудников, помогая им получить визу по заявлению H1-B (рабочая-профессиональная виза). Среди таких компаний Google, Facebook, Apple и Microsoft, а также Intel и Infosys. Издание приводит слова Скотта Пурселла, работающего рекрутинговым менеджером в Jobspring Partners, говорящего что «россияне — ценный ресурс».

Нина Завриева, основатель сервиса Channelkit добавляет, что «высокоуровневые российские специалисты получают комфортные по условиям и уровню оплаты труда предложения, чувствуя себя хорошо в Кремниевой Долине».

Она также гооворит, что в ситуации с быстрорастущим бизнесом российские фонды не могут удовлетворить их аппетит, предлагая неинтересные по суммам и условиям инвестиции. Это заставляет многих предпринимателей искать пути переезда в США со своим продуктом.

ссылка на оригинал статьи http://megamozg.ru/post/13786/

Восстановление информации c твердотельных накопителей — подводные камни и рекомендации

Привет, Гиктаймс! Тема надежности твердотельных накопителей поднималась уже неоднократно, наверняка есть интерес и к тому, как восстановить данные с неисправного диска. Предупреждаю сразу: никаких волшебных рецептов я не открою, резервное копирование рулило, релит и будет рулить – да пребудет с вами Acronis, TimeMachine и Windows Backup! Под катом – типичные неисправности/неприятности и вероятные методики их устранения.


Вариант 1. Закончился ресурс на запись

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

Вариант 2. Появились bad-сектора

Тоже не катастрофа, но приятного мало. Принципы работы SSD подразумевают наличие резервной области, из которой выделяются новые ячейки взамен вышедших из строя. Серверные/корпоративные SSD имеют больший запас по ёмкости, для домашних пользователей отводится больше рабочего пространства. Если количество испорченных блоков резко растёт – скорее всего проблема случилась с одним из чипов памяти. Решение вопроса: немедленный бэкап того, что на диске – и диск по гарантии продавцу/производителю.

Вариант 3. Более тяжёлые случаи

Выход из строя контроллера. SSD перестаёт определяться системой и, собственно, настаёт момент принимать решение – гарантия или данные (особопряморукие коллеги наверняка ухмыльнутся, понимая, что можно выбрать и данные, и гарантию, но большинству нужно выбирать что-то одно). Если ничего ценного на накопителе не было, тогда, тихо поругивая некачественную детальку, несите её в гарантийный отдел, а вот если на диске хранилось нечто крайне нужное…

Существует несколько способов восстановить информацию с диска. Самый простой – прогрев чипов. Бывает, случается так, что некачественная пайка приводит к отслоению микросхемы и тогда после жарких тепловых ванн контроллер оживает. При это вы получаете и информацию, и «отремонтированный» исправный SSD-диск.

Вероятность такого исхода не велика, поэтому рассмотрим худшие варианты. Выход из строя контроллера не даёт 100% гарантии потери данных. Можно вручную снять чипы памяти с платы (отпаять), поместить их в программаторы и считать оттуда драгоценные единички и нолики, после этого специальным софтом расшифровать данные с диска и радоваться. Такая процедура стоит дорого, лишает вас навсегда накопителя, но возвращает в вашу жизнь диплом/чёрную бухгалтерию/фото любимой бабушки (нужное подчеркнуть).

Ещё один крайне опасный для информации на SSD вариант – форматирование диска. И вроде бы ничего страшного, куча софта восстанавливает данные после команды format, но есть нюанс. Как правило, при форматировании диска запускается команда TRIM и вот тогда… Хотя не все случаи фатальны. Команда TRIM является командой интерфейса ATA, но при подключении диска через USB-переходник она не выполняется. Кроме того, если диск был отформатирован в FAT или на нём стояла старая ОС (Windows XP или Vista) или диск был частью RAID-массива – тогда все еще можно исправить.

Что следует из вышеописанного: при любом раскладе не забывайте бэкапится. Важнейшие данные должны быть либо продублированы, либо они вам не так важны. Следите за состоянием вашего SSD-диска с помощью утилит мониторинга, например OCZ SSD Guru, и вовремя отслеживайте приближающийся «конец света».

Как вы понимаете, эта и предыдущая статья (про OCZ SSD Guru) была написаны к Международному дню резервного копирования, с которым мы вам и поздравляем!

Спасибо за внимание, готовы ответить на ваши вопросы.

Наши предыдущие посты:

» SSD-накопитель Intrepid 3700 для корпоративных клиентов
» SSD-накопитель Intrepid 3700 для корпоративных клиентов
» Новый флагманский SSD-накопитель Vector 180
» Эволюция контроллеров SSD-дисков
» SSD SATA против SSD PCI-E | часть первая: теоретическая
» SSD SATA против SSD PCI-E | Часть вторая: практическая
» SSD SATA против SSD PCI-E | Часть третья и финальная: серверная

ссылка на оригинал статьи http://geektimes.ru/post/248172/