Search
Write a publication
Pull to refresh
1
0
Виталий Ф. @FuN_ViT

программист, синьор-помидор :)

Send message

Когда не нужна тригонометрия

Reading time4 min
Views54K
Просматривая различный код по выводу на экран какой-нибудь даже примитивной графики, я заметил чрезмерную любовь некоторых программистов к тригонометрии. Часто код пестрит синусами, косинусами и арктангенсами там, где без них можно обойтись. Этим грешат даже хорошие программисты, которые способны спроектировать сложную систему, но почему-то не освоили вектора в объёме школьной программы. Буквально азов векторной алгебры хватает для решения многих насущных проблем. В этом топике я хочу провести краткий ликбез, напомнить основные действия с векторами на плоскости и в качестве примера решить две задачи без тригонометрии: поиск отражённого луча по падающему лучу и произвольно расположенному зеркалу, а также рисование наконечника стрелки. Если вы можете представить в голове рисование произвольно направленной стрелки без синусов и косинусов, смело пропускайте этот топик. Для остальных постараюсь объяснять попроще.
Читать дальше →

Уязвимость в стандартной функции glob() как угроза для FTP-серверов

Reading time2 min
Views3.1K
Сайт SecurityReason сообщает об обнаружении опасной ошибки в реализации библиотечной функции glob() из стандартной библиотеки языка C (libc) на множестве платформ.

Эта функция предназначена для получения списка файлов, чьи имена удовлетворяют заданному шаблону. Ошибка заключается в том, что ограничение на выдачу функции, задаваемое переменной GLOB_LIMIT, не действует в случае задания некорректных путей в шаблоне. Такими некорректными значениями могут быть, например, «*/../*/../*foo» или «{..,..,..}/*/{..,..,..}/*bar». При этом вызов функции glob() может исчерпать всю доступную память процесса.

Особенную опасность данная ошибка представляет для (S)FTP-серверов, особенно с разрешенным анонимным доступом. Очевидно, запрос на листинг файлов с вышеприведенной маской приводит к скорому отказу в обслуживании FTP-сервера.

Уязвимости подвержены, по последним данным, как минимум следующие ОС: OpenBSD 4.7, NetBSD 5.0.2, FreeBSD 7.3/8.1, Oracle/Sun Solaris 10, а также все версии Linux с GLIBC. Уязвимость пока что устранена только в NetBSD; компании и сообщества, занимающиеся разработкой вышеперечисленных (за исключением NetBSD) операционных систем, пока не дают никакой информации; именно поэтому уязвимость классифицируется как «0-day». Сообщается также, что vsftpd не подвержен уязвимости.

Желающим попробовать уязвимость в действии могу предложить набрать в bash консоли команду наподобие
ls ../../*/../*/*/../../*/*/*/*

Можно эксплуатировать, например, из PHP:
php -r 'print glob("../../*/../*/*/../../*/*/*/*");'

или Python
python -c 'import glob; glob.glob("../../*/../*/*/../../*/*/*/*")'
и из любого другого языка, обращающегося к этой функции.

Оригинальный отчет об уязвимости тут: securityreason.com/securityalert/7822

extsrc.js — загружаем все скрипты асинхронно и уже после отрисовки страницы (даже с document.write)

Reading time4 min
Views21K
Хочу Вам рассказать о штуке, которую я изобрел сегодня, чтобы ускорить процесс загрузки сайтов. Все вы знаете, что <script src="..."></script> задерживает отрисовку страницы, пока не загрузится этот скрипт. Если их десятки — это может сереьезно замедлить работу сайта — в результате пользователь 20 секунд пялится на пустую (или недорисованную) страницу из-за какого-нибудь тупящего социального виджета (умножить на десяток этих виджетов).

Не правда ли было бы круто, если бы можно было сказать <script extsrc="..."></script> ("extsrc" = "грузи потом"), чтобы скрипты загружались после того как страница отрисована?

Все бы хорошо, но есть document.write… Сегодня я наконец решил его проблему — представляю extsrc.js — скрипт, который запустит все скрипты после отрисовки страницы (даже если они содержат document.write — и правильно отрисуется все).

Результат? Супер-быстрая загрузка страниц, даже если там море всяких внешних скриптов.

Использование:

Заменяем <script src="..."> на <script extsrc="...">.

Итого получается:

<script src="http://whiteposts.com/extsrc_js/extsrc.js"></script>
<script extsrc="..."></script>

все остальное под катом

Юнит-тестирование и CodeCoverage для Javascript-кода

Reading time4 min
Views8.3K
В этой заметке расскажу о своем опыте юнит-тестирования JS-кода, опыте использования среды выполнения тестов js-test-driver, ее возможности code coverage и скручивании ежа с ужом, а именно данных о code coverage от js-test-driver и генератора отчетов о покрытии PHP_CodeCоverage. Расскажу и покажу как получить вот такие отчеты о покрытии кода...
Читаем дальше...

Stuxnet поразил более 1000 предприятий Китая

Reading time2 min
Views993
Несмотря на то, что компьютерный вирус Stuxnet уже давно известен специалистам по компьютерной безопасности, атака этого вируса продолжается — на этот раз стало известно о том, что Stuxnet поразил множество промышленных объектов Китая. И это не заявления отдельных «анонимных источников», об атаке заявило сразу несколько государственных СМИ этой страны. Общее количество, зараженных Stuxnet, исчисляется миллионами.

Читать дальше →

Полезные мелочи: перекодировка неправильной раскладки

Reading time2 min
Views8.5K
Часто случается, что текст набран в неправильной раскладке.
Владение методом слепого набора, конечно, существенно уменьшает эту вероятность, но казусы всё равно случаются.
Особенно обидно, если текст довольно большой и перенабирать лень.

Способ автоматически перенабирать текст.

Выпущено исправление уязвимости связанное с приложениями ASP.NET

Reading time1 min
Views493
Как и ожидалось, сегодня было выпущено исправление уязвимости, которое связано с ASP.NET-приложениями.

Загрузить исправление можно по следующим ссылкам:
  • .NET Framework 1.1 Service Pack 1 and Windows Server 2003 Service Pack 2 (32-bit) (link).
  • .NET Framework 3.5 on Windows Server 2003 and Windows XP (link);
  • .NET Framework 3.5, Windows Vista Service Pack 1 and Windows Server 2008 (link);
  • .NET Framework 3.5 Service Pack 1 on Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008 (link);
  • .NET Framework 3.5 Service Pack 1 on Windows Vista Service Pack 1 and Windows Server 2008 (link);
  • .NET Framework 3.5 Service Pack 1, Windows Vista Service Pack 2, and Windows Server 2008 Service Pack 2 (link);
  • .NET Framework 3.5.1 on Windows 7 and Windows Server 2008 R2 (link);
  • Microsoft .NET Framework 4 (link);
Обновление будет доступно через каналы обновлений Windows Update и Windows Server Update Services в течении нескольких дней.

QtCreator TODO Plugin. Продолжение

Reading time5 min
Views5.5K
TODO Plugin

Некоторое время назад я писал о разработанном мною плагине отображающем список все TODO, FIXME и т. д. комментариев в текущем открытом документе. Вчера я выпустил новую версию этого плагина, в которой получилось довольно много изменений, вот ключевые из них:
  • Появились настройки
  • Теперь можно добавлять свои ключевые слова для поиска и задавать цвет и иконку их вывода.
  • Можно выбирать куда выводить информацию: в стандартное окно «Build issues» или в отдельное «TODO Output».
  • Можно выбирать: попрежнему выводить информацию только о текущем открытом файле или собирать информацию со всего текущего проекта.
  • Комментарии на языках отличных от английского теперь отображаются корректно.

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

Интерпретатор Brainfuck размером 160 байт

Reading time1 min
Views4.3K
Прочитав про IP-стэк twIP, который помещается в размер твита и отвечает на пинги, корейский программист Канг Сеонгхун (Kang Seonghoon) решил создать нечто такое же миниатюрное и при этом работоспособное. И он создал самый маленький интерпретатор Brainfuck на C размером всего 160 байт.

s[99],*r=s,*d,c;main(a,b){char*v=1[d=b];for(;c=*v++%93;)for(b=c&2,b=c%7?a&&(c&17?c&1?(*r+=b-1):(r+=b-1):syscall(4-!b,b,r,1),0):v;b&&c|a**r;v=d)main(!c,&a);d=v;}
Читать дальше →

Вы только послушайте!

Reading time2 min
Views12K

Мы хотим поделиться с вами очередной хорошей новостью от Яндекса: сегодня запускается бета-версия нового сервиса — Яндекс.Музыка. Он позволяет не только находить, но и слушать музыку, хранящуюся в музыкальном каталоге Яндекса, который мы бережно собираем для вас. Сейчас в каталоге около 800 тысяч треков от 58 тысяч исполнителей — от Wu Tang Clan до Алены Свиридовой.


Несомненно, многие из вас уже встречали наш музыкальный плеер на странице результатов веб-поиска, когда искали музыкальные композиции. Мы решили расширить возможности поиска музыки: с этого момента плеер будет показываться не только при поиске композиций, но и при поиске исполнителей (Louis Armstrong или или Feist) и альбомов (Moby «Play» или Pink Floyd «The Wall»)! Теперь прямо на странице результатов поиска вы можете прослушать три наиболее популярные композиции исполнителя или три первые трека из альбома.


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

Читать дальше →

Сорванные дедлайны министерств

Reading time3 min
Views12K
Сегодня, благодаря предоставлению гос услуг в электронном виде, можно без очереди подать заявление на загранпаспорт или зарегистрировать автомобиль. Однако, никто официально не обнародовал полный перечень услуг и функций государства, которые можно получить через интернет. Отыскав этот документ, мы поняли, в чем причина.

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

Мы представляем ТОП-5 министерств, которые не успели по срокам перевода своих услуг в интернет.

Пятое место. Роструд, МИД России, Минобрнауки, МВД и Росреестр

У Каждого Министерства по одной невыполненной гос услуге. Роструд еще в декабре 2009 обещал доступ к формам заявлений по получению информации о положении на рынке труда в Российской Федерации, правах и гарантиях в области занятости населения и защиты от безработицы.
Читать дальше →

Высокодоступное отказоустойчивое web-приложение на Apache2 и MySQL

Reading time7 min
Views18K

HA-Apache2 Web-Site and HA-MySQL


Цель: обеспечить высокую доступность web-приложения и минимальное время простоя при отказе одного как web-сервера, так и сервера баз данных.
Замечание! Схема предполагает, что web-приложение и база данных находится на разных серверах.
Для примера будем устанавливать wordpress.

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

Understanding node.js

Reading time4 min
Views10K
Node.js обычно вызывал у людей, которым я о нём рассказывал, две различные реакции. В основном они воспринимали его «как есть», однако многие были сбиты с толку.

Если вы относитесь ко второй группе, я попробую объяснить, что же такое Node.js:
  • Это инструмент командной строки. Вы скачиваете архив, компилируете и устанавливаете его.
  • Это позволит вам выполнять программы на JavaScript, набрав 'node my_app.js' в терминале.
  • JavaScript выполняется движком V8 (тем самым, благодаря которому так быстро работает Google Chrome).
  • Node.js предоставляет API для доступа к сети и файловой системе из JavaScript.
Вам хочется чего-то большего? Тогда прошу заглянуть под кат и продолжить чтение

Почему Git

Reading time8 min
Views69K
Было время, когда я ничего не знал про VCS, ни что это такое, ни тем более зачем это мне. И верхом своих достижений считал папочку с архивами версий. К моменту осознания необходимости системы контроля версий я уже набил шишек и прочувствовал необходимость такого инструмента. Но борландовский аналог CVS меня не впечатлил. У каждого файла свой номер версии. Как мне получить срез определенного релиза я так и не разобрался. А в это время SVN победоносно шла сквозь умы разработчиков. Черт, это было то, чего мне так не хватало. Прочитав доку и начав работать я просто влюбился в нее. Да, были трудности и определенные неудобства, но куда без них.
Так я и работал бы в SVN, но ничего не стоит на месте. В интернете уже потекли тонкие ручейки новостей про Git. Я не кидаюсь за каждой новой технологией, и прошло уже достаточно много времени, пока мне не прожужжали этим Git’ом все мозги. Мне стало любопытно, я вначале присматривался, примерялся, а потом плюнул и начал новый проект на Git. Мучался с ребятами 2 недели, накачал литературы, написал шпаргалку… ничего, привыкли, … а потом меня поперло.

Теперь меня регулярно просят рассказать про Git и что в нем такого. Уже надоело, поэтому этот пост для тех, кто еще сомневается.
Читать дальше →

Фреймворк Limb, версия 2010.1 RC2

Reading time4 min
Views2.7K
С праздником, коллеги! А у нас тут подарок назрел. Ну или кара небесная. Пока не понятно. Если вкратце, то мы напряглись, собрались, сконцентрировались, и готовы представить на суд общественности новую версию нашего фреймворка Limb. Ну, правда, не совсем версию, а второй релиз-кандидат — 2010.1 RC2.

Для тех, кто не в курсе, Limb это PHP-фреймворк, ориентированный на быструю и гибкую разработку. Наши приоритеты/ гибкость — качество кода — скорость разработки.

Limb одним списком:
  • Парадигма — MVC
  • DependencyInjection — Toolkit(императивное инстанцирование)
  • Организация приложения — InterceptingFilter
  • ORM — ActiveRecord
  • DBAL — собственная реализация (MySQL 4.1+, SQLite, Oracle (OCI8), PostgreSQL 8.2+, Linter)
  • Шаблонизатор — Macro, WACT, Blitz и т.д.
  • Тестирование — на основе SimpleTest

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

База изображений в любых форматах и разрешениях

Reading time3 min
Views4.5K
заказчик: Пусть аватарки пользователей у нас будут в 50×50 и 100×100, в JPEG
разработчик: Готово

заказчик: Надо переделать, чтобы аватарки были в PNG
разработчик: Сделал

заказчик: Пусть аватарки будут в GIF, 25×25 и 40×40
разработчик: Ага, проверяй
заказчик: Уже? Как ты это так быстро делаешь???
разработчик: …
Читать дальше

Хостинг на AWS (EC2, EBS, S3) для чайников

Reading time4 min
Views139K
На хабре уже проскакивали периодически заметки посвященные AWS (Amazon Web-Services) — так что тема не новая. Однако, если для меня лично (да и для многих моих знакомых как выяснилось) — этот термин был знаком — однако каких-либо деталей я не знал. Попробую на основании только-что полученного опыта рассказать немного подробней, а так же изложить основные шаги по организации хостинга сервера на AWS и его преимущества. Как и несколько ссылок, которые могут оказаться полезными.
image
Читать дальше →

Рисоваська, часть 3: Амазоновские веб-сервисы в действии

Reading time10 min
Views36K
В данной статье я расскажу, что же такое Amazon Web Services или сокращенно AWS, для чего это можно использовать, и приведу пошаговую инструкцию, как настроить их у себя с самого начала. В статье основной упор будет сделан на Amazon Elastic Compute Cloud или EC2 и Amazon Simple Storage Service или S3. Amazon CloudFront, являющийся логическим продолжением S3, хорошо рассмотрен в статье mish: Настраиваем CloudFront для работы с S3. С остальными амазоновскими сервисами вы можете познакомиться самостоятельно: Amazon SimpleDB, Amazon Simple Queue Service или SQS, а также другими сервисами Амазона. Данная статья является продолжением первой и второй статей. Итак:

Что такое Amazon Web Services


Это набор удобных сервисов, которые можно использовать как по отдельности, так и вместе. В первую очередь это «облачные вычисления» (анг. Elastic Compute Cloud). Что это значит? Это значит, что вы можете запустить в «облаке» любое кол-во компьютеров нужной вам конфигурации c нужной вам операционной системой всего за пару минут. Это действительно так. Время запуска одного инстанса (instance называется один виртуальный сервер в амазоне) обычно не превышает двух минут. Сразу после запуска инстанс начинает работать, к нему есть root-доступ по SSH или Remote Desktop, если там установлен Windows. Не правда ли, здорово! С момента запуска оплата за инстанс идет по часам. В любой момент вы можете остановить инстанс и деньги за его использование перестанут сниматься. Помимо времени работы инстанса, так же отдельно оплачивается входящий и исходящий трафик.
Читать дальше →

Information

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