Архив за 19 марта 2013 - 4

Доброго вечера, Хабрахабр.

Сегодня я расскажу о небольшом компоненте формы, который мне довелось написать для замечательного PHP фреймворка Yii. Этот компонент (а точнее, модель формы) позволяет редактировать config-файлы прямо из веба. Статья навеяна недавним постом о подобной функциональности, но та реализация основана на БД. Это не совсем нэйтивно для конфигурационных файлов Yii. К тому же за такое решение придётся заплатить лишними запросами к базе/кэшу, а их в проектах с высокой посещаемостью нужно экономить.

В статье будет много кода, но я постараюсь разделить его на логичные куски.
Читать полностью »

В ОАЭ построили крупнейшую тепловую солнечную электростанцию

Вчера была запущена в работу крупнейшая солнечная электростанция, построенная в ОАЭ. Эта электростанция получила название «Солнце-1». Планы по созданию станции появились у арабов еще в 2010 году, тогда не так много людей верили в возможность создания «солнечной» станции мощностью в 100 МВт. Тем не менее, объект таки был построен и сдан в эксплуатацию. Реализация проводилась силами компаний Mazda, Total и арабского правительства.

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

Все сервисы Windows Azure, доступные по SSL сегодня, используют цепи сертификатов, основанные на одном корневом сертификате: GTE CyberTrust Global Root. Майкрософт решила поменять его на более надежный Baltimore CyberTrust Root (sha1 вместо md5 и 2048 бит открытого ключа взамен 1024). Миграция начнется 15 апреля 2013 и продлится несколько месяцев. Будут заменены все сервисные SSL/TSL сертификаты Azure.

Большинство пользователей платформы и хостящихся в ней приложений не заметят никаких изменений: «новый» Baltimore CyberTrust Root уже далеко не новый и присутствует в списках корневых сертификатов многих OS включая Windows, Windows Phone, Android and iOS. Его признают IE, Safari, Chrome, Firefox, and Opera. Меньшинству же рекомендуется успеть принять меры до 15 апреля.
Читать полностью »

Флагманский смартфон Samsung Galaxy S 4 был представлен несколько дней назад.

Однако вот уже полтора года в линейке корейского гиганта по сути два флагмана: представитель линейки Galaxy S и Galaxy Note (обзор Samsung Galaxy NoteЧитать полностью »

На сайте ARM Holdings появилось сообщение, из которого следует, что ее глава Уоррен Ист (Warren East) намерен уйти из компании 1 июля сего года. Господин Ист проработал в компании 19 лет, из которых почти 12 лет он занимал пост генерального директора. Его преемником на посту генерального директора ARM станет президент компании Саймон Сигарс (Simon Segars).

Уоррен Ист проработал на посту генерального директора ARM более десяти лет

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

Американский рекомендательный сервис StumbleUpon пожаловался на отечественный Surfingbird в администрацию AppStore. По мнению StumbleUpon, русские нарушили американский патент: "Method and System for Single-Action Personalized Recommendation and Display of Internet Content". При неблагоприятном для Surfingbird развитии событий их, как минимум, могут удалить из AppStore.

Патент 2011-го года описывает работу кнопок и серверной части рекомендательного сервиса. Например, описаны реакции на нажатия.

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

Как сообщает Bloomberg со ссылкой на источники, знакомые со статистикой продаж планшетных компьютеров Microsoft, компания реализовала около 1,5 млн планшетов семейства Surfce. Из этого числа примерно 400 тыс. пришлось на модели Surface Pro, остальные 1,1 млн составили продажи Surface RT.

Спрос на Microsoft Surface Pro выше, чем на младшую модель

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

Если кто-то ещё не знает, что такое хвостовая рекурсия, вот простой пример метода, складывающего в лоб натуральные числа от 1 до n (n≥0):

function add(n,acc) {
  if(n===0) return acc;
  return add(n-1,acc+n);
}

Изначально функция вызывается с параметром acc=0. В случае, если n не равно нулю, метод вызывает сам себя с другими параметрами и возвращает результат. Компилятор (или интерпретатор, или виртуальная машина) могут понять, что текущий вызов функции в стеке уже не нужен, стереть его и заменить следующим вызовом. Таким образом, рекурсия не приводит к разрастанию стека. Строго говоря, хвостовой вызов не обязан обращаться к текущей функции: вызов любой другой тоже может быть хвостовым. Главное условие: вызов функции и возврат её результата должны быть последними действиями в текущей функции. К примеру, в такой реализации метода хвостовой рекурсии нет, так как после вызова происходит ещё сложение:

function add(n) {
  if(n===0) return 0;
  return n+add(n-1);
}

По ряду причин хвостовая рекурсия в JavaScript не поддерживается (обсуждение на эту тему есть на StackOverflow). Поэтому вызов вроде add(100000,0) завершится исключением. На Хабре предпринимались попытки решить эту проблему через setTimeout, но это выглядит не очень честно и не очень красиво. Более изящное решение для языка Python было предложено с использованием «трамплина». Похожий подход для JavaScript рассмотрен здесь. Но мне захотелось, чтобы работало быстро и чтобы функцию можно было записать прямо как в примере выше. Посмотрим, что можно сделать.
Читать полностью »

На сайте Internet Census 2012 internetcensus2012.bitbucket.org опубликованы результаты сканирования всех существующих IPv4 адресов. Сканирование такого масштаба удалось осуществить благодаря ботнету из 420 тысяч незащищенных устройств.
Полное сканирование /0
Читать полностью »

Как известно, процессоры Intel, известные сейчас под условным наименованием Haswell, выход которых ожидается в этом году, будут рассчитаны на новое процессорное гнездо — LGA1150. Это приведет к несовместимости новых процессоров не только с существующими системными платами, но и с некоторыми системами охлаждения.

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


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