• Как определить дубликаты картинок с помощью PHP

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



      Потому рано или поздно встает вопрос автоматизации процесса поиска повторов, и тут мы рассмотрим основные, а также попробуем в деле.
      Читать дальше →
    • Как интегрировать email и мессенджер для командной работы

        В большинстве инструментов для рабочего общения так или иначе присутствует поддержка электронной почты. Сложно найти сервис, в котором не будет email-оповещений о новых и непрочитанных сообщениях, разработчики некоторых подобных проектов идут еще дальше и внедряют возможность ответа на такие информационные письма (кое-кто даже с вложенными файлами — Fleep, Glip, Kato).



        Однако до сих пор нет ни одного сервиса, который бы вернул эпоху Outlook и Blackberry (то есть примерно 2004 год). Тогда люди отправляли сотни коротких email-писем, которые похожи на нынешние сообщения в чате. Как правило адресатов таких посланий было мало — несколько самых близких коллег. Blackberry позволял людям оставаться на связи даже на ходу.

        Возможно, в том, что эта эпоха ушла, нет ничего плохого, но ведь все еще остались люди, которые используют email как чат.
        Читать дальше →
        • +12
        • 6,7k
        • 5
      • Облака — белогривые лошадки или безопасный ownCloud для «маленьких» в FreeNAS

        image
        ownCloud, как утверждает Википедия — это Свободное и открытое веб-приложение для синхронизации данных, расшаривания файлов и удалённого хранения документов в «облаке». И, как мне кажется, довольно интересное решение для организации собственного домашнего облака.

        Однако, ownCloud, устанавливающийся в виде плагина в системе FreeNAS, да и просто из коробки, имеет ряд недостатков, от которых хотелось бы избавится даже при использовании дома:
        • Во-первых, устанавливается в связке с SQLite, что подходит только если у вас небольшое кол-во файлов и пользователей, и абсолютно не подходит, если вы планируете синхронизацию с помощью клиента. У меня же хранилище уже расползлось почти на 5Tb и установленный таким образом ownCloud просто отказывался видеть часть файлов. Да и без синхронизации отдача от облака не велика. Заменим базу данных на MariaDB.
        • Во-вторых, отсутствует работа по https, а мне совсем не нравится мысль о том, что кто-то может перехватить мои файлы. Включим https.
        • В-третьих, начисто отсутствует защита от банального подбора пароля методом брутфорса. Защитимся от брутфорса с помощью fail2ban.
        • В-четвёртых, мне лень часто просматривать логи на предмет взлома, но очень хочется оперативно узнавать о таких попытках. Настроим push-оповещения о попытках подбора пароля с помощью сервиса pushover.net.

        Как же это всё сделать
      • Еще один вариант динамического DNS на своей площадке или как я отказался от dyndns

        Уже давно использовал сервис от компании dyndns, который позволял привязать доменное имя к динамическому ip-адресу компьютера. Удобно администрировать клиента, удобно клиенту из дома подключиться к рабочему компьютеру. Но с некоторых пор сервис начал затягивать гайки.

        Сначала можно было пользоваться одним доменным именем на учетной записи бесплатно. Позже доменное имя начало сбрасываться каждый месяц — это периодически требовало усилий по восстановлению работы. Другие бесплатные сервисы не приглянулись и в какой-то момент я подписался на их платную услугу за $25 в год, что дало мне возможность использовать до 30 доменных имен.

        Было неудобство — клиентская программа под Windows визуализирует все доменные имена моей учетки при настройке и любой клиент случайно или умышленно может повредить привязку чужого доменного имени. В общем, гнетет, но терпимо. На прошлой неделе пришла пора продлевать на год подписку. Цена выросла до $30, да и рубль упал к этому моменту до 60 руб за доллар. Жалко мне стало рублей и я таки решил дожать динамический DNS на своей площадке.
        Читать дальше →
      • Файловая система Linux полностью на tmpfs — скорость без компромиссов

        Предыстория


        Так сложилось, что уже пять лет мой раздел ntfs с операционной системой Windows располагается на рамдиске. Решено это не аппаратным, а чисто программным способом, доступным на любом ПК с достаточным количеством оперативной памяти: рамдиск создается средствами загрузчика grub4dos, а Windows распознаёт его при помощи драйвера firadisk.

        Однако до недавнего времени мне не был известен способ, как реализовать подобное для Linux. Нет, безусловно, существует огромное количество линуксовых LiveCD, загружающихся в память при помощи опций ядра toram, copy2ram и т. д., однако это не совсем то. Во-первых, это сжатые файловые системы, обычно squashfs, поэтому любое чтение с них сопровождается накладными расходами на распаковку, что вредит производительности. Во-вторых, это достаточно сложная каскадная система монтирования (так как squashfs — рид-онли система, а для функционирования ОС нужна запись), а мне хотелось по возможности простого способа, которым можно «вот так взять и превратить» любой установленный на жесткий диск Linux в загружаемый целиком в RAM.

        Ниже я опишу такой способ, который был с успехом опробован. Для опытов был взят самый заслуженный дистрибутив Linux — Debian.
        Читать дальше →
      • Поиск взаимосвязей на примере Нефть-Рубль

          Одна из базовых задач анализа данных — поиск взаимосвязи двух величин. Здесь я хочу показать пример поиска связи между ценой нефти и курсом рубля.

          image

          Во-первых надо определить, имеет ли вообще задача смысл. Почему нефть и рубль должны/могут быть взаимосвязаны? Вкратце, модель такая: экспортёры продают нефть за доллары, а затем продают доллары, чтобы получить рубли для расчётов внутри страны. Механизм крайне упрощён, надо учитывать объёмы добычи-продажи, что эскортируют не только нефть, не всегда экспортёры продают доллары, на курс валют влияет ЦБ интервенциями и т.д. И тем не менее, будем считать, что модель более-менее рабочая, то есть, что существуют фундаментальные причины для взаимосвязи цены нефти и курса рубля.
          Читать дальше →
        • Установка и запуск Android-приложений на Linux

          image

          Как известно, многие Android-приложения можно нативно запускать на Chrome OS благодаря библиотеке Chrome App Runtime.

          С помощью расширений chromeos-apk и ARChon запуск Android APK стал возможен и на других ОС.

          В этой публикации я расскажу, как установить произвольное Android-приложение на Ubuntu 14.04.
          Читать дальше →
        • 30 чудных библиотек для PHP программистов

          Предлагаю читателям «Хабрахабра» перевод публикации «30 Amazing PHP Libraries for Programmers and Developers». Авторы собрали несколько удивительных PHP-библиотек, которые помогут реализовать некоторые классные вещи, не прилагая много усилий. Цель обзора состоит в том, чтобы преподнести что-то новое, поэтому список не включает популярные библиотеки.
          Читать дальше →
        • 12 игр, которые обучают детей программированию

          • Перевод


          Программирование сейчас очень популярно. По всему миру 36 миллионов детей принимают участие в мероприятиях движения «Час программирования». Цель этих мероприятий – помочь детям стать активными, а не пассивными пользователями технологий, а также получить знания, которые в будущем могут помочь устроиться на хорошую работу в нашем все более и более техническом мире.

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

          Такие платформы, как Scratch и Alice позволяют детям (и взрослым) создавать собственные игры и анимации, используя упрощенные методы программирования. Однако не всем детям это интересно. И вот для таких детей существует множество игр, которые обучают базовым принципам программирования в веселой и доступной форме.

          Читать дальше →
        • 300 потрясающих бесплатных сервисов

          • Перевод


          Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



          A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

          • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
          • Bootswatch: Бесплатные темы для Bootstrap.
          • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
          • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
          • Strikingly.com Domain: Конструктор веб-сайтов.
          • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
          • Withoomph: Мгновенное создание логотипов (англ.).
          • Hipster Logo Generator: Генератор хипстерских логотипов.
          • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
          • Invoice to me: Бесплатный генератор счета.
          • Free Invoice Generator: Альтернативный бесплатный генератор счета.
          • Slimvoice: Невероятно простой счет.

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