Новости информационных технологий - 25866

Как можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек много, а качества мало: ленивые вычисления не реализованы ни в одной библиотеке, тесты есть в половине случаев, типы коллбэков ограничены, а иногда и вовсе незнамо что выдаётся за LINQ. Поэтому я написал свою библиотеку. Встречайте:

YaLinqo — Yet Another LINQ to Objects for PHP

Возможности:

  • Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Некоторые методы отсутствуют, но работа ведётся. Всего реализовано более 70 методов.
  • Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ.
  • Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN.
  • 100% покрытие юнит-тестами.
  • Коллбэки можно задавать замыканиями, «указателями на функцию» в виде строк и массивов, строковыми «лямбдами» с поддержкой нескольких синтаксисов.
  • Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях.
  • Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п.

Пример кода:

// Отфильтровать продукты с ненулевым количеством, поместить в соответствующие категории,
// отсортированные по имени. Продукты отсортировать сначала по убыванию количества, потом по имени.

from($categories)
    ->orderBy('$v["name"]')
    ->groupJoin(
        from($products)
            ->where('$v["quantity"] > 0')
            ->orderByDescending('$v["quantity"]')
            ->thenBy('$v["name"]'),
        '$v["id"]', '$v["catId"]', 'array("name" => $v["name"], "products" => $e)'
    );

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

Фотожурнализм как тяжелый труд
Крис Уилкинс передает фотографию с помощью цифрового передатчика Hasselblad Dixel во время атаки ракет на Дхаран (Саудовская Аравия) в первую ночь войны в Персидском заливе, 17 января 1991 года.

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

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

Известный проект Роскосмоса и Российской академии наук «Марс-500», в ходе которого был сымитирован пилотируемый полёт на Марс шести «космонавтов», согласившихся 520 суток просидеть в замкнутом помещении и стоивший $15 млн, судя по всему, в ближайшее время не получит реального применения.

Генеральный конструктор и генеральный директор научно-производственного объединения имени С.А. Лавочкина Виктор Хартов признал, что пилотируемый полёт на Марс является нецелесообразным как с экономической, так и с научной точки зрения. На вопрос журналистов о планах покорения космоса, он ответил в том смысле, то лететь на Марс просто, чтобы оставить там свой след (подобно тому, как США предприняла ряд лунных миссий, чтобы не выглядеть по сравнению с СССР аутсайдером) не имеет смысла.
Читать полностью »

Вчера задался себе таким вопросом: как можно обезопасить мой профиль в Google Chrome и вообще все данные, которые в нем хранятся? Немножко погуглив, я нашел ссылки на кучу расширений (типа этого), которые позволяют устанавливать пароль как на браузер так и на отдельные его профиле (это логично, если знать как работает Chrome в режиме мультипрофильности). Я начал их устанавливать и сразу тесты на баги. И как оказалось ни один из них не хочет адекватно работать в режиме мультипрофильности. Не очень-то долго думая я решил написать собственное расширение и заодно разобраться в Google Chrome API.Читать полностью »

Компания Apacer сообщила о выпуске линейки твердотельных накопителей SAFD25A. Изделия ориентированы на корпоративный сегмент: производитель утверждает, что новинки найдут применение в серверах, обеспечивающих облачные вычисления. Думается, что и в менее специализированных серверах и рабочих станциях новые SSD Apacer также будут использоваться.

Apacer SAFD25A

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

На прошлой неделе бывшие и настоящие конкуренты известного социального сайта digg.com распространили информацию о том, что сервис был куплен американской медиа-компанией BetaWorks за $500 000 — другими словами, за сумму, никак не сравнимую со стоимостью Digg в пору его расцвета в 2008 году, когда Кевин Роуз (создатель сайта) пытался продать его Google за $200 млн. Сейчас же BetaWorks намерена объединить покупку со своим малоизвестным социальным сервисом news.me и перезапустить проект.

Появившийся осенью 2004 года digg.com почти сразу был признан одним из самых перспективных проектов года и уже в 2005-м Кевину Роузу и его коллегам Оуэну Бирну и Рону Городецкому удалось успешно провести раунд финансирования и получить инвестиции в размере $2.8 млн. Удачно найденная «фишка» с голосованием, дающая иллюзию власти, способствовала немалому росту популярности сайта, и Роуз уже мог планировать инвестиции на более значимый срок — в 2006 году сайт получил еще почти $9 млн. Почти сразу после этого исполнительный директор Digg Джей Аделсон начал переговоры с Google о покупке его компании поисковым гигантом за $200 млн (об этом как о свершившемся факте также шла речь на Хабре). Однако, некоторое время спустя стало известно о том, что в Google решили не покупать сайт — согласно слухам, якобы из-за неудовлетворительного технического состояния ресурса и его инфраструктуры. Тем не менее, даже сам факт возможной покупки новостного сайта поисковыи гигантом оказал положительное влияние на ожидания инвесторов, и Адельсон успешно завершил третий раунд финансирования, получив в своё распоряжение еще $29 млн венчурного капитала.
Читать полностью »

Простой сервер задач с очередью в MySQL (без проблем с блокировками) Почти в каждом более менее динамическом проекте бывает возникает необходимость выполнять очереди задач в фоне (отправка email, обновления кеша, реиндексация поиска и т.д.). Job сервера (Gearman и т.п.) хороши, но для большинства простых задач они избыточны. Классическая реализация очередей в MySQL (при помощи SELECT … LOCK FOR UPDATE) при росте нагрузки со временем начинает приводить к проблемам с блокировкой. Потому, как это обычно бывает, пришлось написать свой «велосипед» для работы с фоновыми задачами, который бы «точно работал» и был предельно прост.
Читать полностью »

Думаю, ни для кого не секрет, что иностранные слова легче запомнить когда знаешь как они произносятся. Благо, для этого есть отличный online-сервис Forvo — база произношений слов. Этот сервис предлагает веб-интерфейс (а также api с некоторыми ограничениями, о котором чуть позже), для доступа к базе и прослушивания слов. Но каждый раз открывать браузер для прослушивания — не очень удобно. Поэтому я начал искать простенький forvo-клиент. Требования у меня были следующими: простота использования, никаких GUI, легкая переносимость, отсутствие требования хранения каких-либо настроек. Но вот незадача — все попытки найти подобный, простенький клиент под Linux не увенчались успехом, что меня сильно удивило. Ведь реализация такого клиента, является, по сути не слишком уж сложной задачей. Таким образом, я понял что придется написать утилиту самому.
Читать полностью »

Формула притяжения данныхСотрудник VMware Дэйв МакКрори, специалист по виртуализации и облачным вычислениям, создал необычную модель, описывающую поведение данных, сервисов и приложений в интернете. Он предложил ввести для данных понятия массы и гравитации, аналогичные тем, что используются в физике, и даже вывел формулу гравитационного взаимодействия между приложением и данными. Эта модель не так безумна и бессмысленна, как может показаться на первый взгляд — аналогичные гравитационные модели давно используются в экономике и социологии, успешно описывая товарооборот между странами и городами, миграцию и урбанизацию.

Подобно звездам или планетам, скопления данных притягивают друг друга и более легковесные объекты, такие как приложения и сервисы, причём сила этого притяжения прямо пропорциональна массе и обратно пропорциональна расстоянию, аналогом которого в сети служит комбинация полосы пропускания и пинга. Кроме того, каждая пара «данные — приложение» характеризуется индивидуальным коэффициентом, зависящим от того, насколько интенсивно приложение запрашивает или генерирует данные. Этот коэффициент аналогичен гравитационной постоянной. Так же как и для любого объекта в сильном гравитационном поле, необходимо приложить значительные усилия, чтобы «оторвать» приложение от данных, сообщить ему достаточную «скорость убегания». Приложения и сервисы, работающие с данными, стремятся уменьшить задержки и расширить канал, приближаясь к данным с ускорением, как падающий на землю камень.
Читать полностью »

Не так давно я опубликовал на хабре первую часть статьи по восстановлению расфокусированных и смазанных изображений, где описывалась теоретическая часть. Эта тема, судя по комментариям, вызвала немало интереса и я решил продолжить это направление и показать вам какие же проблемы появляются при практической реализации казалось бы простых формул.
В дополнение к этому я написал демонстрационную программу, в которой реализованы основные алгоритмы по устранению расфокусировки и смаза. Программа выложена на GitHub вместе с исходниками и дистрибутивами.
Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.
Восстановление расфокусированных и смазанных изображений. Практика
И вот результат обработки:
Восстановление расфокусированных и смазанных изображений. Практика
Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.
Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать полностью »


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