Pull to refresh
513
0
Слава Вишняков @yoihj

Нагруженные бэкэнды

Send message

«OOC для C, — это как Scala для Java»

Reading time7 min
Views2.2K
Сегодня на Hacker News наткнулся на пост о (похоже очень) новом языке "ooc". Бросил на день все дела, занялся ковырятельством — уж больно интересно выглядит.

Итак, "ooc — это современный, объектно-ориентированный, функционально(ватый), высокоуровневый, низкоуровневый, секси язык программирования". (Именно секси его и представляют разработчики, ну а я бы добавил что еще и "компилируемый")

По сути — ooc — транслятор языка высокого уровня в C со сборщиком мусора.

Как выразился один из посетителей сайта: "ooc для C, — это как Scala для Java" (jimbokun@HN).

Обязательный «Hello, World» на ooc:

hello.ooc:
"Hi, softer world =)" println()

на выходе hello.c и hello.exe.

ooc-компилятор транслирует это в c-код и использует доступный c компилятор (gcc, mingw, icc, tinycc) чтобы сделать из этого hello.exe (или ./hello). Поддержка tinycc заявлена, но в реальности ждем поддержки C99 в самом tinycc (автор обещал сделать обходные пути, но пока не работает), поэтому наслждаемся пока что довольно неслабого размера .exe'шниками (gcc от mingw других не делает).

Итак, что у нас уже есть в языке: классы, объекты, строгая типизация, угадывание типов (n := "Beer" length()), chaining (.dothis().dothat()), совместимость с c-библиотеками, абстрактные классы, шаблоны из C++, списки, разреженные(sparse) списки, хеши (ArrayList, SparseList, HashMap), for (i in list) { ... }, обертки для c-шных функций и классов, перегрузка операторов, полиморфизм, сборщик мусора (отключаемый), import file/name (не нужны .h, но .h можно использовать как extern), closures, eiffel's contracts, исключения, reflections, pattern matching, ranges, ternary operator, bindings, generics, coroutines, GTK, SDL, OpenGL, GLU, GLUT bindings…

Как сказал товарищ varjag@HN: «Я думаю это розыгрыш, сделанный пользователями Ruby, но нигде этого в тексте не вижу.» Нет, этот язык существует на самом деле. Примеры, линки, установка, подводные коряги — под катом…
Читать дальше →
Total votes 50: ↑44 and ↓6+38
Comments67

Зачем оно — это Opera Unite?

Reading time5 min
Views4.2K
Надоело мне тут в ответ многим писать один и тот же комментарий, да и не влез уже ответ, так что пишу топик.

Opera Unite — НЕ ДЛЯ ТЕХ, кто умеет настраивать DNS, uPNP, для кого ifconfig родной дом, а file_get_contents — жуткая пошлость, он — для людей, для которых даже слово «рутер» звучит так как будто их грубо обидеть пытаются. Опера дала этим людям возможность не зависеть от Flickr, выложив свои фотографии в сети самим, возможность мелким предпринимателям выложить свой статичный сайт, сделанный в Ворде (сохраненный как html) в сеть, а так же профессионалам возможность более просто (за счет zero-configuration) писать для себя мелкие личные сервисы или протитипировать приложения. Легкую возможность обмениваться документами-сообщениями и т.п.

Смысл в том, что Opera Unite — инструмент для начинающих.
А для профи — это либо вариант писать маленькие личные приложения (личный биллинг например, который нужен 5 минут в день).
Читать дальше →
Total votes 219: ↑182 and ↓37+145
Comments156

Opera Unite для веб разработчиков

Reading time4 min
Views944
Как создать простой счетчик в качестве сервиса Opera Unite?
Это поможет понять как вообще писать веб приложения на Opera Unite (так же называемые «сервисы» или «плагины»).

image

15 строк JavaScript + 7 на XML.

Читать дальше →
Total votes 88: ↑74 and ↓14+60
Comments32

multi_get — качаем сайты оптом

Reading time4 min
Views1.7K
Топик будет интересен тем, кто хочет индексировать Интернет-сайты на предельных скоростях (самодельные поисковики, анализы частоты слов, сервисы по анализу html'я и т.п.) Threading тут не дает предельных скоростей, urllib — тем более… Решение здесь в использовании асинхронных запросов из libcurl.

Скорость?
На 500MHZ (очень-очень слабенький VPS) — около 100 URLов в секунду (100 соединений, 2 процесса).
На Amazon EC2 «High-CPU Medium Instance» (.2$/час) ~ 1200 URLов в секунду (300 соединений, 5 одновременных процессов). В один процесс до 660 URLов в секунду.

Для выкачивания множества сайтов и дальнейшей обработки, хочу поделиться одной своей полезной функцией — multi_get — по сути она — удобный wrapper для CurlMulti (libcurl), модифицированный из их примера CurlMulti.

>>> urls = ['http://google.com/', 'http://statcounter.com/']
>>> res = {}
>>> multi_get(res, urls, num_conn = 30, timeout = 5, percentile = 95)
>>> res['http://google.com/']
'<html><title>Google....
# тут обрабатываем res, который содержит HTML всех для URL'ок
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments11

Ну да, сайты на C++

Reading time4 min
Views35K
Проскочила пара топиков про веб на C++ и уж много товарищей недопонимают смысл использования C++ в вебе. Поэтому расскажу как я в своем опыте использовал это. Я использовал, правда, Python, но только потому что библиотеки типа WebToolKit не было под рукой.

Если честно, я в C++ разбираюсь как хакер в женских помадах — как и многие, я большей частью использую PHP (и все больше Python, но его редко для веба — больше для OpenGL), но тем не менее это не мешает мне его(C++) использовать. Это к тому, что не пугайтесь сложности языка — там не все так плохо, как кажется.

Но, что важно: «Premature optimization is the root of all evil». И это важно. Писать какую-нибудь сложную систему сразу на C++ бессмысленно (я про сайты, конечно). Оптимизировать, как правило, нужно только 3% кода. Вот про эти 3 процента я и расскажу.

Был у меня сайт и на нем на всех страницах пользователи могли кое-чего кое-куда писать (долго объяснять) и в уголке шел «поток» в реальном времени (через AJAX update каждые 5 секунд) кто куда и чего написал. Делалось, как и положено на PHP/MySQL — таблица, в ней выбираем последние (условно говоря: WHERE id>MAX(id)-10 ORDER BY id DESC) записи. Периодически удаляем все, кроме последних десяти. Работало замечательно. Пока TechCrunch про сайт не написал. Сдох сервер из-за этой части.
Читать дальше →
Total votes 156: ↑142 and ↓14+128
Comments105

Отучаем Chrome кушать винчестеры

Reading time4 min
Views99K
Нравится мне Chrome, но надоело мне что он скрипит винчестером так как будто они не ломаются. Решил я его отучить это делать. Получилось, теперь делюсь рецептурой.

Зачем? Во-первых, винчестер — не железный, в смысле — железный, конечно, но ломаться умеет и чем больше его долбят — тем быстрее ломается (как я понял на собственном опыте, когда потерял все данные); во-вторых, Хром очень много всякого барахла хранит в базах данных, которые почти не используют память компа, в результате через месяц использования даже набор адреса становится пыткой — винчестер скрипит, буквы по секунде набираются. Все эти проблемы убираются.

Warning-warning! Сразу предупрежу — топик для продвинутых пользователей, много подводных камней! Но если Вы беспокоитесь за свои данные и винчестер — добро пожаловать в наши ряды.
Читать дальше →
Total votes 60: ↑47 and ↓13+34
Comments115

Какая боль! Толпы против Веб — 2:0. Эпизод два — клоны заходят в полдень

Reading time5 min
Views571
Продолжаем warstory оптимизации PHP+mySQL сайта редчайших слов. Одним майским днем, копаясь в словах, мне пришла в голову мысль — расставить под этими словами textbox'ы — использовать [модный для Web 2.0] crowdsourcing. Заполняй чем хочешь, только про это конкретное слово. Но, должно было работать collaborative — как Google Docs — если ты и еще кто-то редактируют слова на одной и той же странице — изменения будут отображаться одновременно. Или, например, кто-то редактирует слово «google» на странице Гугла, а на странице TechMeme, к примеру, есть тоже слово «google» — и им в real-time покажутся эти изменения со страницы Гугла [это необязательно понимать]. Знал бы я какие последствия эта веселая задумка на mySQL окажет позже…

Сделать это оказалось несложно: prototype.js — в руки, ajax — каждые 10 секунд, смотрим в базе что менялось за последние 10 секунд, делаем пересечение со словами на текущей странице, отправляем js highlight effect и новый текст — вуаля. Людей было, но мало кто что-то вводил, тогда я придумал повесить в уголок страницы блок «только что было сказано». Например: «На странице 'fibonacci.com' только что было сказано, что 'fibonacci' → 'crazy math scientist'». Это уже значительно заинтересовало людей и заполняемость выросла в разы. Все видели движения на сайте и сами вовлекались.

Собственно, я сделал достаточно функционала для довольно забавной игрушки — «войны сайтов редкими словами», авто-категоризатор, синонимизатор и т.п. Я сидел мирно редактировал «живой» сайт, загружал новый файл, если видел ошибку — исправлял, не переживая, что это кто-то может видеть. Не подозревал я, что уже тысячи людей видят это. После очередной ошибки в названии функци что-то произошло… я не смог загрузить на FTP index.php… это был TechCrunch....
Читать дальше →
Total votes 96: ↑83 and ↓13+70
Comments43

« Пожалуйста, не натопчите мне на сайте »

Reading time5 min
Views1.5K
Почти уже два года назад, когда я еще не учил людей зарабатывать на стартапах, делать быстрые фотомодели, гугл не был еще такой фигней, а веб-толпы не выиграливали у меня 2:0, я создавал сайты. И вот один из клиентов попросил меня сделать что-то такое, от чего все офигели бы для его магазина элитной мебели. Сначала у меня получился вполне заурядный дизайн, который они и не приняли, но вот вторая идея снесла всем голову. За эти два года, я увидел только один сайт, который сделан по такой технологии, хотя она лежит на поверхности, и это была компания уровня Sony (кто именно — забыл.)


Помните, когда в статье про быструю фотомодель вчера, я сказал, что скоро мы будем работать в объемном мире? Думаете, я шутил? Ну что ж ты встал путник — входи, разувайся, я тебе поведаю историю как Сеть перестала быть плоской два года назад…
Читать дальше →
Total votes 192: ↑160 and ↓32+128
Comments129

Не, ну Гугл — ну полная фигня

Reading time2 min
Views1K
Не ну Гугл — эт ну полная фигня:

1. При поиске «купить виагру», я не могу уже найти ни одного приличного спам-сайта!
2. GMail отправил письмо сына известного Нигерийского шейха в «Спам», а он мне предлагал 3% от 512 млн.евро!
3. Мне сказали, что Гугл Планета Земля — бесплатна, но отказываются рассказать как ее распродать!
4. Google Docs заявил, что я могу работать над документом вместе с любым человеком на земле. Я написал договор о передаче мне 50% акций и пригласил Сергея Брина поставить на нем подпись, оказывается Google Docs этого не может!
5. Google Maps не могут даже проложить ни одного наркомаршрута из России в Колумбию, не переплывая океан — 21 век, а живем как при Царе Горохе!
6. Когда я потерял своего Питона и пошел на гугл искать его — я выяснил все про замыкания и итераторы, но змейку так и не нашел. С горя я попросил Продуктовый Гугл найти мне яблочко, но дойдя до 32ой страницы, я понял, что, похоже, Американы жрут ноутбуки.
Читать дальше →
Total votes 466: ↑289 and ↓177+112
Comments61

Какая боль! Толпы против Веб — 2:0. Эпизод один — высокоскоростная очередь

Reading time5 min
Views811
Тов. phpdude открыл блогом «PHP+MySQL оптимизация» интересную тему, захватывающую большую аудиторию. Расскажу я о том, как я Веб 2.0 убил два моих сервера (из-за моей глупости в т.ч.) и еще планирует поубивать.

Все началось осенью 2006 года, когда я решил открыть небольшой сайтик с 70 миллионами страничек. И нет, они не были бы сделаны по цепям Маркова, а именно были бы полезными. Почему 70 миллионов? Потому что столько .com/.net/.org доменов в тот момент я смог найти.
Читать дальше →
Total votes 87: ↑70 and ↓17+53
Comments104

Сделаем фотомодель по-быстрому!

Reading time8 min
Views5.7K
Не знаю о чем Вы там подумали из названия, но знайте — я этого в виду не имел! :)
Итак, продолжим становиться «Колумбами и открывать то, что до нас знали миллионы людей», кто вспомнит откуда эта почти-цитата (подсказка: про Интернет) тому 4 балла к гик-карме. Итак…

Итак, в свободное время, когда я не создаю безумные проекты, не учу людей зарабатывать на стартапах, в это время я изучаю всяческие гик-технологии, в т.ч. одна из них прямо-таки у меня стала навязчивой идеей. А именно — взять свой городок в пригороде большого города и превратить его в 3d-уровень для какой-нибудь игры (в FarCry/Crysis я продвинулся в этом больше всего), при том с фотограмметрической точностью (погрешности в метр или меньше от реального расположения домов).

Для того, чтобы это сделать нам понадобится:
  1. 3d-модели;
  2. 3d-движок;
  3. наука со страшным названием фотограмметрия;
  4. даже математика — а то, когда читаешь про Spherical harmonics — радуешься, что приматом был некоторое время; грустишь что все-равно не понимаешь о чем там...
  5. тонна терпения (впрочем, я не был бы мировым лентяем, если бы это и правда было так);

Начнем с 3D моделей

Читать дальше →
Total votes 139: ↑119 and ↓20+99
Comments76

Золотые горы стартапу, или не живем бесплатно, даже если назвался 'free'

Reading time11 min
Views1.8K
Этот топик — приглашение к обсуждению. В конце обещаю очень полезную вещь.

В последнее время, все больше появляется бесплатного и открытого. Все понятно, когда Google делает великолепный инструмент на котором можно было бы много заработать (SketchUp) — бесплатным — все понимают, что компания и так зарабатывает много денег и ей важнее заполучить больше пользователей. Хотя и есть платная версия. Однако все больше и больше из нас придумывают новые идеи, такие как YubNub (сервис не мой), и подобные, которые облегчат жизнь пользователям. Сделать — день-два, отладить неделя-десять, донести до ума пользователей — год.

Однако встает вопрос — тратить время на развитие сервиса — это терять деньги. Элементарно — сервер, люди, личное время — все деньги отнимает. Раньше эту проблему могла бы решить реклама…
Читать дальше →
Total votes 128: ↑117 and ↓11+106
Comments128

YubNub: Командная строка интернета

Reading time1 min
Views1.2K
Недавно у нас вышел Ubiquity, но вот почему-то немногие знают, что давно уже есть более мощный инструмент (хотя и менее «лингвистичный»).

yubnub.org

Наберите:
«en2ru things» — вы попадете на yandex.lingvo с переводом;
«split yahoo.com google.com» — в 50%-ных фреймах откроются они оба;
«g habr» — Гуглить «habr»;
«wiki habr» — Искать в Вики «habr»;
«flicc google» — Искать в Flickr Creative Commons;
«site2pdf google.com» — догадайтесь.

В общем, каким бы сервисом Вы ни пользовались — наберите его название + что-то еще? скорее всего произойдет то, что Вы ожидали. Отлично интегрируется со всеми браузерами. Есть возможность создавать свои команды и списки популярных. Есть даже возможность scrapeать Web и кодить.
Читать дальше →
Total votes 69: ↑52 and ↓17+35
Comments31

Антисемантический CSS и анти-MVC-фреймворк на mySQL для изготовления смысла жизни и бизнеса

Reading time7 min
Views921
«Однажды я спросил свою супругу — зачем она режет кусок мяса квадратом, обрезая его края, прежде чем положить его на сковородку, а остальное выкидывает?...»

Этот топик не имеет смысла.

Он про философию, не про технологии (хотя и про них тоже). Прекратите его читать, если текст более двух абзацев для Вас слишком длинный. Если Вы уже используете правильные технологии — iMac, Linux, PostgreSQL, MVC-фреймворки и забыли как пишется TABLE — не читайте — Вы уже готовы к жизни, поздравляю!

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

Около 10 лет назад, когда я начал создавать сайты, я стал впервые сталкиваться с тем, что то, что я делаю, работало, но оказывалось часто на взгляд многих неправильно работающим. В то время еще существовал список рассылки «banners», где можно было кому угодно, даже простым школьникам, коим я тогда и был, поспорить напрямую с Артемием Лебедевым, Антоном Воскресенским (владельцем LinkExchange.ru) и другими передовиками РуНета.
Читать дальше →
Total votes 158: ↑109 and ↓49+60
Comments193
2

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity