Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2012-11-30

Multi-Arch

Случилось неизбежное — при очередном обновлении системы (Debian Wheezy amd64) мне предложили удалить skype. Старый добрый скайп, еще до майкрософтовской версии, работавший хорошо, скромно и незаметно. Трах-тибидох мазафака, не было печали. Говорят, удаляй, ибо мы избавились таки от навязшего в зубах пакета ia32, на который завязан твой скайп.
Что делать, удалил.

А сегодня поставил новый, уже от Microsoft.
Несмотря на то, что в Debian.wiki есть простое и понятное описание установки, в интернетах полно вопросов — а как, собственно, ставить на 64-разрядный дебиан этот богомерзкий скайп? А очень просто.
dpkg --add-architecture i386
apt-get update; aptitude update; aptitude upgrade; aptitude full-upgrade
gdebi skype-debian_4.1.0.20-1_i386.deb
apt-get install -f
...
killall skype
aptitude install libpulse0:i386
Включить мульти-арч; обновить пакеты; скачать с сайта пакет скайпа «Debian 7.0 (multiarch)» и установить его; поправить зависимости; запустить скайп и убедиться, что микрофон не работает; убить скайп (ибо он повесился при закрытии окна) и поставить libpulse. Убедиться, что все работает и жрет процессор (порядка 3% у меня отьел).

Все это написано вполне доступно в статье http://wiki.debian.org/skype
Почему в интернетах столько вопросов на эту тему — не постигаю. Ну да, использование мульти-арч тянет за собой изрядную дозу библиотек, что многим не нравится. Зато надоевший ia32 выкинут и работа в смешанных средах переходит на новый качественный уровень.
Прогресс неостановим. Хотя иногда он похож на регресс.

original post http://vasnake.blogspot.com/2012/11/multi-arch.html

2012-11-28

Критика Android

Cdriper поделился с нами статьей полной критики в адрес Android API. Замечательная статья и читается без зевоты, ибо на эмоциях.

Умудриться в XXI веке придумать объектно-ориентированный API на Java, который навевает не самые добрые ассоциации с Win32 API, который был сишный и зачат еще в 80-х -- ох, это надо было сильно постараться!

Мое, опять же, нескромное мнение, такое: API в XXI веке должен быть удобным, очевидным, надежным. API Android не удовлетворяет ни одному из этих требований, и, наверное, единственное, чем могут оправдываться его создатели, что он типа быстрый. Ну, феноменальная скорость работы Android уже давно стала притчей во языцех; а когда я сегодня смотрю на свой Galaxy S3 и думаю о том, что пару лет назад кто-то додумался сэкономить 200 килобайт флеш память для того, чтобы программисты всюду использовали int, вместо enum, мне становиться понятно, что человеческой глупости просто нет предела.


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

original post http://vasnake.blogspot.com/2012/11/android_28.html

2012-11-27

Обкусанный дом


В гуглоплюсе занятная картинка попалась

Говорят, китайская семья отказалась продавать свою квартиру, мотивируя тем, что предложенных денег не хватит на переезд.
Так и живут теперь посреди шоссе.
Не химаеры, нет.

original post http://vasnake.blogspot.com/2012/11/blog-post_27.html

2012-11-26

Рынок

Приятно видеть, как со временем купля/продажа у нас становится все цивилизованнее. Не так давно были времена, когда каждый первый интернет-магазин и не думал отзванивать или, упаси Боже, отписывать по электропочте вежливый отказ в случае отсутствия товара. Бывало, заказываешь товар, а они молчат. То ли товар ищут, то ли послали тебя нахер по тихому. Неприятно и неудобно было.
А сейчас красота. Нет товара? Либо письмецо напишут, либо позвонят с извинениями. Мало того, появились случаи, когда не просто извиняются - «товара нет», так еще и предлагают аналогичный. Просто растут над собой продавцы.

Некоторое время тому, захотелось нам с Наташкой закупить домой тренажер для физкультуры. Уж больно заманчивое преложение было
Atemi Total Trainer в пределах 5000 рублей


Заказал в одном магазине — нету. В другом — под заказ, говорят, везти? Везите. Обещали за 3-4 недели привезти, уж полгода везут. Короче, после четвертого магазина я стал записывать их в список, чтобы не ошибиться. На сегодня в моем списке 36 интернет-магазинов у которых выставлен на продажу Тотал Трейнер, но на складах его нет.

И только в прошлую пятницу, 37-ой магазин сообщил, что хотя заказанного Тотал Трейнера нет, зато есть точно такой же тренажер, только с другим названием и чуть дороже:
Body Sculpture

И поинтересовались — брать будешь? А я чо, после полугода неспешных поисков и запросов у 36-ти магазинов, откажусь штоле? Беру.
Сегодня привезли, хороший.

И вот теперь я вижу следующую ступеньку для роста нашей интернет-торговли. Раз уж освоили общение с клиентом на уровне сообщить как дела с заказом, даже если заказ аннулируется, то пора осваивать предложение альтернативных вариантов. Ну и что, что конкретного товара нет, зато есть похожий. Продай! Я не могу поверить, что в 36-ти магазинах, торгующих несуществующим Тотал Трейнером, не продается вполне реальный Боди Скульптура. Уверен, что продается. Но деньги ушли в хороший магазин, который раньше других освоил следующую ступень своего развития.

Реклама магазина:

original post http://vasnake.blogspot.com/2012/11/blog-post_26.html

2012-11-23

Все про Python и Unicode

Уж сколько времени прошло с начала массовой миграции текстов в Unicode, а грабли по прежнему попадаются.
Я вот, к примеру, вчера полчаса убил на попытки понять, почему не работает конструкция типа такой
# -*- mode: python; coding: utf-8 -*-
x = u'тут у нас плейсхолдер валяется'
unistr = getUniDataFromOutThere()
y = x.replace(u'плейсхолдер', unistr)

получая в рыло отлуп типа такого
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

Долго я тупил, думая — какой нафик аски кодек, когда у меня все в Unicode? Пока не нашел в коде получения данных место, где юникодная строка зачем-то кодируется в UTF-8. То есть в функцию replace второй параметр попадал не в Unicode а в кодировке UTF-8.

Аккуратность и еще раз аккуратность требуется. Зато в процессе тупления нашелся прекрасный материал про Unicode и Python


original post http://vasnake.blogspot.com/2012/11/python-unicode.html

2012-11-22

Please Do Not Feed the Animals

Во дела в политкорректной Америке

Widely posted on Facebook last week was this pithy statement: "The Food Stamp Program, administered by the U.S. Department of Agriculture, is proud of the fact it is distributing the greatest amount of free meals and food stamps ever. Meanwhile, the National Park Service, administered by the U.S. Department of the Interior, asks us 'Please Do Not Feed the Animals.' Their stated reason for the policy is because the animals will grow dependent on handouts and will not learn to take care of themselves."

Wow.


И судя по реакции, их зацепило.
Денег все меньше а ртов все больше.

original post http://vasnake.blogspot.com/2012/11/please-do-not-feed-animals.html

2012-11-21

Sketchpad

Товарищи дорогие, что же это делается? Пятьдесят лет прошло с момента создания первой программы CAD/CAM а где прогресс?
В видеоролике, особенно во второй части, демонстрируется программа Sketchpad созданная Иваном Сазерлендом в MIT в начале шестидесятых годов двадцатого века.

Этот Скетчпад умеет делать все, что нужно чертежнику и конструктору. Прошло 50 лет, посмотрите на Автокад — ничего принципиально нового.

Ужос.

original post http://vasnake.blogspot.com/2012/11/sketchpad.html

2012-11-20

Отваливается долгий запрос

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

In Fiddler we are getting timeout exception in stack trace.

Server Error in ‘/ArcGIS/rest’ Application.
Request timed out. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: Request timed out.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[HttpException (0x80004005): Request timed out.]

After going through all ESRI/Microsoft forums. I have increased a) Increased executiontime out value in web.config b) Increased GP Tool client timeout values , but nothing worked and application fails with same mesage. The REST tool is working fine when this executed from browser and URL is available and correct.


Хорошо, что хорошо кончается, добрые люди помогли и боец порешал проблему, суть которой в том, что IIS использует свои собственные таймауты и по их истечению убивает «зависший» поток.

The process got terminated so that it couldn’t do logging in ArcGIS Server level so that exception didn’t happen inside of the service call handling. This means that the query handling thread got terminated from ASP.NET / IIS level. We have got some clue from ESRI Forum as well.
We have added <httpRuntime executionTimeout=”7200″/> in Web.config file under C:\inetpub\wwwroot\ArcGIS\rest folder and our issues are resolved. This value extended the execution time out and process ran smoothly and client application displayed the results as well.
Finally we learnt from this link  ”Since ASP.NET timeout is internally implemented so that the check fires in every 15 seconds. When using the default value, the ASP.NET aborts the query thread in 110 – 125 seconds


Не забывайте оттюнить web.config
Кстати, из статьи так и не понятно, какая модель веб-сервиса геопроцессинга была использована — синхронная или асинхронная.


original post http://vasnake.blogspot.com/2012/11/blog-post_20.html

2012-11-19

Прожорливый Android

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

Это скрин с Samsung Galaxy Note, с которым я хожу нынче.
Обычно аппарат живет три — четыре дня, хотя хорошую статистику я набрать пока не успел. А за эти девять дней я пользовался файфаем, читал книжку и прочее по мелочи в сумме около пяти часов. Все остальное время аппарат либо лежал на столе, либо в кобуре на поясе.

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

original post http://vasnake.blogspot.com/2012/11/android.html

2012-11-16

Shrink

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

Но все, что сказано выше, это более-менее эволюционная биология. Самое же интересное происходит при переходе на следующий этаж. Тут мы достигаем социальности.
Почему к некоторым людям мы испытываем социально обусловленное отвращение? Ну понятно, потому что они мерзкие, гадкие, подлые, отвратительно себя ведут и говорят гнусные вещи. Но почему отвращение? И отвращение ли это?
Отвращение «до-социальное», - пищевое, токсическое, инфекционное, травматическое, - насколько оно связано с отвращением «социальным», с яркой негативной эмоцией в адрес людей, демонстрирующих нарушение принятых нами поведенческих и этических норм? Является ли «социальное» отвращение прямым продолжением «биологического», и основано на той же общей психической механике, только на другом уже уровне, или же это две совершенно разные истории, и мы все это называем «отвращением» скорее по аналогии, - к «гнилому» человеку мы испытываем явную неприязнь, и это внешне напоминает то, что мы испытываем к гнилому мясу, и мы все эти переживания называем одним словом «отвращение» скорее для метафорической образности
И потом уже из этого вырастают все более сложные эмоциональные конструкции. Был даже предложен термин «перевозбуждение морали» для состояния человека, остро озабоченного моральными суждениями. Обнаружено, что у таких людей обострены реакции в инсулярной зоне как на ситуации, связанные с этическими суждениями, так и при демонстрации вне-социальных, «биологически» отталкивающих стимулов. То есть неадекватно «морализаторствующие» одновременно более склонны к выраженной брезгливости (однако, работает ли это в обратную сторону, т.е. склонны ли очень брезгливые люди демонстрировать избыточное напряжение этического чувства,- остается вопросом открытым, я очень подозреваю что да).
И сверху уже идут комплексные эмоции, которые вырастают из базового отвращения,- презрение, высокомерие, самоуничижение и все прочие, связанное с пассивными (либо пассивно-агрессивными) реакциями отторжения и неприятия. Что интересно, на все другие базовые «плохие» эмоции существуют свои патологии,- депрессия для печали, тревожности для страха, патологии, связанные с утратой контроля над агрессивным поведением для гнева. А патологиям отвращения специального диагноза не досталось


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

original post http://vasnake.blogspot.com/2012/11/shrink.html

Remote desktop

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

Доступен стабильный релиз системы SPICE 0.12.0, позволяющей организовать удаленную работу с рабочим столом, функционирующим в виртуальном окружении под управлением QEMU/KVM. В отличие от таких протоколов как VNC (Virtual Network Computing), ICA (Citrix Independent Computing Architecture) и RDP (Microsoft Remote Desktop Protocol), в SPICE рендеринг содержимого экрана и обработка аудиопотоков производится на стороне клиента, а не на сервере, что, например, позволяет без лишней нагрузки на сервер просматривать видео или осуществлять VoIP звонки, делая для пользователя выполнение приложения на удаленном сервере максимально приближенным к локальному запуску программы.
...
Производительность сервера с 16GB ОЗУ достаточно для одновременной работы 50 клиентов выполняющих типичные десктоп приложения, или 40 клиентов 20% из которых просматривают видео или прослушивают аудио.



Currently, the project main focus is to provide high-quality remote access to QEMU virtual machine. Seeking to help break down the barriers to virtualization adoption by overcoming traditional desktop virtualization challenges, emphasizing user experience



QEMU is a generic and open source machine emulator and virtualizer.
When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). By using dynamic translation, it achieves very good performance.
When used as a virtualizer, QEMU achieves near native performances by executing the guest code directly on the host CPU. QEMU supports virtualization when executing under the Xen hypervisor or using the KVM kernel module in Linux.


Так что если кому нужен сервер под рабочие станции — есть смысл посчупать QEMU + SPICE.

original post http://vasnake.blogspot.com/2012/11/remote-desktop.html

2012-11-14

Apache httpd: File does not exist

Хорошо, когда сайт разрабатывается и хостится на Linux. Терпимо, если на MS Windows. Но совсем нехорошо, если разработка на MS Windows а хостинг на Linux. Хуже только если наоборот.

Вот, к примеру, недобрые люди зачем-то названия файлам дали в КэмелКейс, да еще в смешанном — то с маленькой буквы начинается, то с большой. В страницах урлы прописаны тоже с фантазией. Винде пофигу, ей неважно в каком регистре буквы в именах файлов. А вот Linux отличает. Там файлы «Файл» и «файл» - это два разных файла и могут они лежать рядышком не мешать друг другу.

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

Но добрые люди всех спасут — они создали аддон к Apache, называется mod_spelling

Помимо регистров буков аддон умеет очепятки исправлять.

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

original post http://vasnake.blogspot.com/2012/11/apache-httpd-file-does-not-exist.html

2012-11-13

zapret-info.gov.ru

Ну что, началось? (http://zapret-info.gov.ru/)

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

Пока до этого не дошло и потребителю трафика опасаться особо нечего, есть масса способов обойти нынешние запреты. Они, эти способы, были и раньше, только были не интересны массовому интернетчику. Зато теперь про них узнает широкая общественность, процесс пошел (оборотная сторона медали — народ станет немного образованнее в IP технологиях).
Пара цитат:

На самом деле, обойти блок легко, и даже с двойным профитом.
  • Огнелис. Ставим на огнелис плагин AnonymoX или ему подобные.
  • Опера. Используем режим Opera Turbo.
  • Хром — аддон наподобие Hide My Ass! Web Proxy.
  • Гугл транслейт и прочие онлайн-переводчики.
  • Вариант классический. Ставим TOR, Freenet, I2P.
  • VPN-туннельчеги а-ля CyberGhost или LogMeIn.
  • Юзаем прямой ввод адреса зарубежного прокси-сервера в браузер. Их можно найти на сайтах, выкладывающих списки таких адресов, или при помощи программ-сканеров портов для поиска в сети прокси-серверов: Nmap, fping, RealVNC Bypass Authentication Scanner, Proxy Scanner, Http Proxy Scanner, Angry IP Scanner, Proxy Hunter, Proxy Finder, XSpider.
  • Программы автоматической подкачки и подстановки прокси-серверов: Steganos Internet Anonym, Proxy Switcher, JonDo, Hide IP, Auto Hide IP, Real Hide IP, Hide Your IP Address, ProxyShell Hide IP, Hide My IP, Super Hide IP, Platinum Hide IP, Easy Hide IP, Mask Surf Standard, Free Anonymous Proxy, PROXY for User`s, Web Proxy Checker, Anonymous Guest — Proxy Checker SOCKS Manager.
  • Веб-анонимайзеры — сайты, имеющие форму для ввода адреса целевого сайта и последующего его графического отображения.
  • Шлюзы «интернет на почту». Отправляем веб-адрес заблокированной страницы на мыло такого шлюза. В ответ на указанный обратный адрес придет письмо, содержащее указанную веб-страницу. Пишем на Web4W3, ERC Web-to-Email, www4mail.
  • Используем открытые DNS-серверы.



Благо на уровне «черных списков» подобная ограничения обходятся крайне просто.
1) В сети огромное количество анонимайзеров
2) Скачайте браузер Opera. Нажмите кнопку Opera Turbo и смотрите то, что захочется именно вам
3) Также можно к своему браузеру (Mozilla Firefox и Chrome) поставить плагин, который позволит вам также анонимно гулять по сети и смотреть все, что вашей душе угодно. Плагин начинает защищенно подгружать сайт после нажатия появившейся кнопки в браузере.
3) Менее удобным является способ обхода блокировок используя браузер Tor
4) О VPN, i2p и других способах отхода от цензуры, мы пока разжевывать не будем, хотя пытливые умы могут почитать.
VPN http://ru.wikipedia.org/wiki/VPN
i2p http://ru.wikipedia.org/wiki/I2P http://www.i2p2.de/index_ru.html



В общем, все как всегда — грабли старые, хорошо натоптанные. На экономику Сеть давит государственное бремя — экономика Сеть уходит в тень. Как скоро термин «теневой/серый Интернет» станет общеупотребимым?

Развлекайтесь

original post http://vasnake.blogspot.com/2012/11/zapret-infogovru.html

2012-11-12

Toolbar

Есть такая библиотека - Esri ArcGIS Silverlight Toolkit

This project contains the source code and libraries for the Esri ArcGIS Silverlight Toolkit SDK. The library is an extension of the ArcGIS API for Silverlight™, ArcGIS Runtime SDK for Windows Phone, and the ArcGIS Runtime SDK for WPF™. Included are a number of controls, widgets, tools, and data sources you can use to enhance your applications.
NOTE: This library is only an extension of the ArcGIS API for Silverlight™, ArcGIS Runtime SDK for Windows Phone, or the ArcGIS Runtime SDK for WPF™. In order to build a complete mapping application, you will also need to install the respective products on which they are built.


Ее компоненты используются при создании аппликух по технологиям Esri.

В один не самый прекрасный день, некто решил убрать из библиотеки компонент Toolbar. Конечно, как положено, некоторое количество версий этот компонент был обьявлен как deprecated, что не помешало мне его использовать. Уж очень удобная шняга оказалась для моих нужд. И вот наступил день Д и час Ч — в версии 3.0 библиотеки компоненты Toolbar уже нет. Моя софтина не компиляется, ничего не работает, ад-и-израиль.

Спасибо добрым людям, библиотека опенсорцная и в наличии старые версии. Я выдрал из версии 2.2 нужный мне (и не только мне) Toolbar и оформил его в виде отдельной либы.
Берите, пользуйтесь, мне чужого добра не жалко.

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

original post http://vasnake.blogspot.com/2012/11/toolbar.html

2012-11-11

Design

К вопросу о дизайне — что не так с этим PDA (Samsung Galaxy Note)? Почему каждый раз как я беру его в руку, оказывается, что взял я его вверх ногами?

С другими имеющимися у меня аппаратами такого эффекта не замечено.

Переводя бессознательное в сознательное, я думаю, что кнопка так выглядит, что представляется мне динамиком и это впечатление усиливается соотношением размеров кнопки и надписи «самсунг» - надпись заметно больше, что приводит к желанию поместить ее вниз.

Интересно, сколько еще людей переворачивают этот аппарат?

original post http://vasnake.blogspot.com/2012/11/design-pda-samsunggalaxy-note.html

2012-11-07

HTTPS без mod_ssl

Старый добрый stunnel, предназначенный для заворачивания трафика в канал SSL. В частности, можно трафик веб-сервера (HTTP) превратить в HTTPS.

To more easily test certain issues (e.g. mixed mode content warnings, or Mapquest SSL tile servers), I wanted to access my Flask local development server over HTTPS. These two articles describe how to do this using stunnel: Testing HTTPS with Django's Development Server, Django Development Server with HTTPS. Using stunnel, you can hit pages on your Django/Flask local dev server over HTTPS instead of HTTP. Here is how I installed it on Ubuntu Precise 12.04


А чего, вполне годное решение. Кто скажет, что это получается не HTTPS? Легко, безболезненно и безо всяких фронтэндов вроде Апачей и прочих Нжинксов.

original post http://vasnake.blogspot.com/2012/11/https-modssl.html

2012-11-06

Две эталонные статьи

В школах, к сожалению, этому не учат. В вузах да, учат, но между делом — типа «курсовая/реферат/диплом должны быть составлены так-то и так-то». А ведь достаточно легко превратить блогозаметку «я тут на грабли наступил, гля пацаны, как я разобрался» во вполне себе толковую работу, которую не стыдно ни в журнал профильный направить, ни в резюме упомянуть.

Пример первый — решение проблемы нехватки inode-ов в Linux (диск забит миллионами мелких ненужных файлов). Статья выросла как раз из блогозаметки.

Прочитал статью Необычное переполнение жесткого диска или как удалить миллионы файлов из одной папки и очень удивился. Неужели в стандартном инструментарии Linux нет простых средств для работы с переполненными директориями и необходимо прибегать к столь низкоуровневым способам, как вызов getdents() напрямую.
Для тех, кто не в курсе проблемы, краткое описание: если вы случайно создали в одной директории огромное количество файлов без иерархии - т.е. от 5 млн файлов, лежащих в одной единственной директории, то быстро удалить их не получится. Кроме того, не все утилиты в linux могут это сделать в принципе - либо будут сильно нагружать процессор/HDD, либо займут очень много памяти.
Так что я выделил время, организовал тестовый полигон и попробовал различные средства, как предложенные в комментариях, так и найденные в различных статьях и свои собственные.
Своего рода, расстановка точек над i в вопросе удаления файлов из переполненной директории.



Пример второй — решение задачи сортировки при нехватке оперативной памяти (применение кодирования суть сжатия).

In my previous post, I shared some source code to sort one million 8-digit numbers in 1MB of RAMas an answer to this Stack Overflow question. The program works, but I didn’t explain how, leaving it as a kind of puzzle for the reader.
I had promised to explain it in a followup post, and in the meantime, there’s been a flurry of discussion in the comments and on Reddit. In particular, commenter Ben Wilhelm (aka ZorbaTHut) already managed to explain most of it (Nice work!), and by now, I think quite a few people already get it. Nonetheless, I’ll write up another explanation as promised.


Таких людей берут в космонавты.

original post http://vasnake.blogspot.com/2012/11/blog-post_6.html

2012-11-02

Еще кофейку

Еще одна реализация JVM на Javascript. Там и демо есть.

DoppioVM - виртуальная машина Java, выполняемая как web-приложение на JavaScript
В рамках проекта DoppioVM развивается реализация Java VM, написанная на языке CoffeeScript и позволяющая запускать в браузере Java-апплеты без необходимости установки Java-плагина. Код DoppioVM транслируется в JavaScript-представление, которое может функционировать в любом современном браузере.



Doppio started out as the mid-term project for a Graduate Systems Seminar. It has since taken on a life of its own, and is complete enough to run implementations of GNU Diff, LZW compression, and the Java 4 compiler. Here's what's supported thus far:
  • All 200 opcodes
  • Exact emulation of Java's primitive types, include the 64-bit long
  • Generics
  • Most of the Reflection API
  • File and Standard I/O
  • Major JDK libraries such as String, Pattern, and HashMap.
The code has been tested on the latest versions of Chrome, Firefox, and Safari, but should run on any browser that supports LocalStorage and Typed Arrays.
Check out the demo!



Прекрасная разминка для студенческой межушной мышцы. Хотя, наверное, полезнее было бы дать студням что-нибудь более практически применимое. Да хоть Mono-Moonlight приподнять или LLVM расширить.

original post http://vasnake.blogspot.com/2012/11/blog-post.html

2012-11-01

Yak shaving

Как там было в сказке, про цепочку действий, которые необходимо было выполнить для получения молока от коровки?

And the next thing you know, you're at the zoo, shaving a yak, all so you can wax your car.


обзор инструментов, упрощающих загрузку векторных картографических данных проекта OpenStreetMap в СУБД PostgreSQL

how to get data out of OpenStreetMap and into a database, and realized that it’s possible no one’s really explained a full range of current options in the past few years. Like a lot of things with OSM, information about this topic is plentiful but rarely collected in one place, and often consists of half-tested theories, rumors, and trace amounts of accurate fact based on personal experience earned in a hurry while at the point of loaded yak.
At first glance, OSM data and Postgres (specifically PostGIS) seem like a natural, easy fit for one another: OSM is vector data, PostGIS stores vector data. OSM has usernames and dates-modified, PostGIS has columns for storing those things in tables. OSM is a worldwide dataset, PostGIS has fast spatial indexes to get to the part you want. When you get to OSM’s free-form tags, though, the row/column model of Postgres stops making sense and you start to reach for linking tables or advanced features like hstore.
Use Osmosis if you’re interested in data. Start with Osm2pgsql if you want to render maps. Move to Imposm once you know exactly what you want.


Как справедливо замечено, есть много информации на тему загрузки данных из OSM в PostGIS, но вся она неравномерно размазана по интернетам. А тут хорошая попытка достичь кумулятивного эффекта. Одобрямс.

original post http://vasnake.blogspot.com/2012/11/yak-shaving.html

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) Klaipeda (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) купи/продай (9) Photo (8) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)