Тут я расскажу, как я вывел некоторые примерные цифры надёжности SSD Intel принадлежащих к mainstream серии и использующих MLC технологию. Почему Intel? Всё просто, у меня их две штуки. Да и на текущий момент это наиболее адекватные SSD на рынке по всем соотношениям, которые можно применить к SSD дискам, а именно: Скорость/Надёжность/Цена. Вдобавок к этому они достаточно популярны (если не самые популярные) и найти других пользователей данных SSD совсем не трудно. Ну и наконец, у компании Intel есть замечательная программа Intel SSD Toolbox, которая и помогла мне определить возможный уровень надёжности этих дисков. Исследование я провёл по чужим показаниям этой программы. К слову говоря, подошла бы любая программа, которая умеет читать S.M.A.R.T. значения с контроллера диска, но искать данные проще по названию известной программы.
RayMan @RayMan
User
Оптимизация графики для Retina-экранов
7 min
210KTranslation
После недавнего выпуска Retina MacBook Pro и The new IPad, экраны с увеличенной плотностью пикселей начали активно входить в нашу жизнь. Что это значит для веб-разработчиков?
Для начала разберемся в терминологии.
Для начала разберемся в терминологии.
Физические пиксели
+120
Об удалении квотированных строк из текста JavaScript
1 min
1.2KКак часть программы анализа исходных кодов было необходимо вырезать из JavaScript все строковые литералы. Сначала на PHP был реализован state based парсер, но это было медленно и уныло. А сделать быстро получилось с помощью регулярных выражений.
-2
Больше нет писем в папке Spam: настройка SMTP-сервера
3 min
68KНедавно мы настраивали SMTP-сервер для нашего проекта. Вопрос стоял так: что нужно сделать, чтобы письма, отправленные нашим пользователям, не попадали в папку со спамом или попадали туда как можно реже?
Было найдено несколько интересных и полезных статей на эту тему (ссылки в конце статьи), на основе которых и было всё сделано в итоге. Но получив сегодня утром очередную порцию рассылки от достаточно известных русскоязычных ресурсов и увидев, что они пренебрегают описанными правилами, я решил кратко и в одном месте собрать все действия, которых достаточно для решения проблемы. Надеюсь, что после этого количество сайтов, отправляющих почту как надо, возрастет.
Приведенные советы актуальны только если вы используете свой собственный SMTP-сервер. При использовании, например, SMTP сервера Google всё уже сделано за нас. Как правило. В любом случае рекомендую проверить (см. подразделы Как проверить?).
Было найдено несколько интересных и полезных статей на эту тему (ссылки в конце статьи), на основе которых и было всё сделано в итоге. Но получив сегодня утром очередную порцию рассылки от достаточно известных русскоязычных ресурсов и увидев, что они пренебрегают описанными правилами, я решил кратко и в одном месте собрать все действия, которых достаточно для решения проблемы. Надеюсь, что после этого количество сайтов, отправляющих почту как надо, возрастет.
Приведенные советы актуальны только если вы используете свой собственный SMTP-сервер. При использовании, например, SMTP сервера Google всё уже сделано за нас. Как правило. В любом случае рекомендую проверить (см. подразделы Как проверить?).
+46
Meteor — Новый способ создания приложений
2 min
23KMeteor представляет собой набор новых технологий для быстрого создания высококачественных веб-приложений, с которым справятся не только опытные разработчики но даже и новички.
Пишите всё приложение полностью на чистом JavaScript. Все API, доступны на клиенте и на сервере — в том числе API базы данных! — Так что один код может легко работать на клиенте и на сервере.
Просто напишите ваши шаблоны. Они автоматически обновляются при изменении данных. Meteor поддерживает любой язык шаблонов.
Пишите ваш код клиентской части, как если бы она была запущена на сервере, и имела прямой доступ к базе данных. Больше не придется получать данные через REST.
Чистый JavaScript.
Пишите всё приложение полностью на чистом JavaScript. Все API, доступны на клиенте и на сервере — в том числе API базы данных! — Так что один код может легко работать на клиенте и на сервере.
Живые обновления страниц.
Просто напишите ваши шаблоны. Они автоматически обновляются при изменении данных. Meteor поддерживает любой язык шаблонов.
Чистая, мощная синхронизация данных.
Пишите ваш код клиентской части, как если бы она была запущена на сервере, и имела прямой доступ к базе данных. Больше не придется получать данные через REST.
+54
PHP Unit. Опыт тестирования классов, работающих с Базой Данных
7 min
16KТестировать или нет классы, взаимодействующие с Базой данных — вопрос куда более холиварный, чем спор «покрывать код тестами или нет». Просмотрев свой проект, нам стало очевидно, что львиная доля классов основана на взаимодействии с базой данных. Поэтому было однозначно решено: «тестированию быть».
Далее я хочу поделится опытом написания модульных тестов для кода, работающего с базой данных.
PHPUnit содержит расширение для тестирования базы данных. Расширение выполняет следующие функции:
К сожалению в этом списке отсутствует одна очень нужная нам фича — восстановление данных в состояние, в котором они находились до тестов. Я хочу предложить 2 варианта решения этой проблемы. Так же попутно остановлюсь на проблеме внешних ключей, которая часто возникает при накатывании не полных тестовых данных на «рабочую» базу.
Итак, я предлагаю 2 варианта решения проблемы: как после проведения юнит теста вернуть базу данных в исходное состояние:
Первый путь — «Транзакционный». Суть которого сводится к выполнению всего теста в рамках одной транзакции, и последующему rollback'у транзакции.
Второй — Перед выполнением теста скопировать структуру «рабочей» базы и проводить тестирование на ней.
Далее я хочу поделится опытом написания модульных тестов для кода, работающего с базой данных.
PHPUnit содержит расширение для тестирования базы данных. Расширение выполняет следующие функции:
- перевод базы данных в заранее известное состояние,
- выполнение необходимых модификаций данных,
- проверка, что в базе данных созданы ожидаемые записи.
К сожалению в этом списке отсутствует одна очень нужная нам фича — восстановление данных в состояние, в котором они находились до тестов. Я хочу предложить 2 варианта решения этой проблемы. Так же попутно остановлюсь на проблеме внешних ключей, которая часто возникает при накатывании не полных тестовых данных на «рабочую» базу.
Итак, я предлагаю 2 варианта решения проблемы: как после проведения юнит теста вернуть базу данных в исходное состояние:
Первый путь — «Транзакционный». Суть которого сводится к выполнению всего теста в рамках одной транзакции, и последующему rollback'у транзакции.
Второй — Перед выполнением теста скопировать структуру «рабочей» базы и проводить тестирование на ней.
+18
Pinba — мониторим php в реальном времени
4 min
56KКак сказано на официальном сайте —
И это действительно так. Она позволит вам в реальном времени получать статистику по работающему приложению, при этом не замедляя само приложение.
Что делать со статистикой — это уже ваше дело, например, мы выводим ее в заббикс и используем как для мониторинга стабильности (нет ошибок, мало число длинных запросов), так и для аналитики.
Удивительно, что про это действительно замечательное изобретение не было еще ни одной статьи на хабре.
Pinba is a realtime monitoring/statistics server for PHP using MySQL as a read-only interface.
И это действительно так. Она позволит вам в реальном времени получать статистику по работающему приложению, при этом не замедляя само приложение.
Что делать со статистикой — это уже ваше дело, например, мы выводим ее в заббикс и используем как для мониторинга стабильности (нет ошибок, мало число длинных запросов), так и для аналитики.
Удивительно, что про это действительно замечательное изобретение не было еще ни одной статьи на хабре.
+175
Оптимизация MySQL запросов
4 min
124KВ повседневной работе приходится сталкиваться с довольно однотипными ошибками при написании запросов.
В этой статье хотелось бы привести примеры того, как НЕ надо писать запросы.
В этой статье хотелось бы привести примеры того, как НЕ надо писать запросы.
+121
Information
- Rating
- Does not participate
- Location
- Таганрог, Ростовская обл., Россия
- Date of birth
- Registered
- Activity