Installing and configuring XAMPP

XAMPP is an easy-to-install bundle for Windows, Linux or Mac, that contains PHP, Apache, MySQL (MariaDB) and phpMyAdmin. Add Git and Composer and you are set to start local PHP development.

But actually, XAMPP requires some additional configuring if you want to make things working right. This mini-guide explains it step-by-step.

Installation

  • First of all, install XAMPP: https://www.apachefriends.org/download.html.
  • Choose Apache, MySQL and phpMyAdmin.
  • Open the Control Panel, we’ll need it later.
  • You can start the servers immediately, but better leave them off for now.

Change MySQL root password

By default, MySQL user name is root with an empty password. An empty password is not very secure, and there can be situations when an empty password doesn’t work and some actual password is required. So let’s change it to password, for example.

  • Open XAMPP Control Panel.
  • Open XAMPP shell (one of the buttons on the right side).
  • Execute command mysqladmin.exe -u root password.

Change password in phpMyAdmin

After changing the MySQL password we need to change it in phpMyAdmin config too.

  • Open file \xampp\phpMyAdmin\config.inc.php.
  • Add password to line: $cfg['Servers'][$i]['password'] = 'password';.

Correct the timezones

In some cases, you may end up with timezones out-of-sync between PHP, Apache and MySQL. Let’s sync them to Europe/Moscow timezone, for example.

Set correct timezone for PHP

  • Open \xampp\php\php.ini.
  • Add line date.timezone = "Europe/Moscow".

Set correct timezone for Apache

  • Open \xampp\apache\conf\httpd.conf.
  • Add line SetEnv TZ Europe/Moscow.

Set correct timezone for MySQL

  • Open \xampp\mysql\bin\my.ini.
  • Add line default-time-zone = "Europe/Moscow".

Ready, steady, go!

We’ve finished configuring XAMPP, grats! Now let’s start the servers.

  • Open XAMPP Control Panel.
  • If you started Apache and/or MySQL already, stop them.
  • Start Apache.
  • Start MySQL.

If you open http://localhost in your browser, you should be redirected to http://localhost/dashboard and see the XAMPP welcome page.

To open phpMyAdmin, press MySQL‘s Admin button in XAMPP Control Panel or open http://localhost/phpmyadmin directly.

DB connection settings

To connect to DB from your code (PHP in this case), use these settings:

That’s it! Now you are ready to code!

О двухфакторной аутентификации

Умер телефон, к которому была привязана двухфакторная аутентификация (через Google Authenticator). Узнал много нового о различных сервисах, которыми пользуюсь…

Выводы:

  1. Использовать двухфакторную аутентификацию (2FA) через СМС, где это возможно. Потерять доступ к номеру телефона менее вероятно, чем потерять доступ к определенному устройству. Точнее, восстановить симку можно всегда, если вы не забыли ее номер и не потеряли свой паспорт.

  2. Google Authenticator — не лучший выбор для 2FA. Собственно, все проблемы из-за отсутствия облачной синхронизации. Понятно, что, скорее всего, так сделано, с одной стороны, чтобы повысить надежность (уж очень надежно вышло, не поспоришь), а, с другой стороны, просто потому, что идите нахуй, вот почему.

    В данный момент планирую попробовать Authy — у него есть облачные бэкапы (но приоритетным способом 2FA выбирать СМС, где возможно).

  3. Даже если потерян доступ к 2FA, большинство сервисов позволяют восстановить доступ или через СМС (ВК), или путем обращения в службу поддержки (Okta, Amazon). Пока что у меня не восстановлен доступ только к DiscordIFTTT), заявка в рассмотрении, но официальная позиция компании «потеряли 2FA — сами дураки, заводите новый аккаунт» не очень воодушевляет.

    Дополнение: Discord так и не восстановил доступ, так что я им больше не пользуюсь.

    Дополнение 2: IFTTT тоже не восстановил доступ. Мой аккаунт деактивировали и выслали мне бэкап всех моих настроек в системе. Т.е. я могу зарегиться под тем же е-мейлом и восстановить все свои настройки. В целом, нормально.

  4. Ну и вообще, пожалуй, если нет острой необходимости защитить какой-то аккаунт, то, возможно, лучше к нему вообще не подключать 2FA. Редкий случай, когда перебдеть может быть хуже, чем недобдеть.

Здоровья и долголетия вашим телефонам. ;)

Произносим правильно IT-термины

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

Поэтому я составил список наиболее частых ошибок произношения с моими предложениями по их исправлению. Часть из них просто без вариантов должны произноситься так же, как и на английском языке. А некоторые слова получили в русском языке собственное звучание, но и тут у меня есть свое мнение на их счет (например, апИ).

  • ЗАГЛАВНЫМИ буквами обозначено ударение.
  • Статья будет обновляться по мере обнаружения мной новых антипаттернов.
  • Если вам есть что добавить, или вы со мной не согласны — добро пожаловать в кОмменты!
English Ошибка Правильно Новояз/перевод
Agile агиль, агиле эджАйл
API Апи э(й)-пи-Ай апИ
comment кОммент коммЕнт см. ниже
driven дрАЙвэн дрИвэн
engine энджАйн Энджин движок
head хид хэд
header хИдер хЭдер заголовок
JSON джейсОн джЕйсон
login лОгин логИн имя пользователя
ORM орм о-эр-Эм
plugin плАгин плагИн
profit профИт прОфит польза, выгода, прибыль
SAP сап эс-эй-пи
service сервАйс сЕрвис сервис
URI Юри ю-эр-Ай урИ

Заметки

Логин

Тут все несколько сложнее. Если обычно надо ориентироваться как раз на английское произношение (например, prOfit => прОфит), то в случае с логином слово уже вошло в русский язык, и тут ударение ставится по-своему. Мне всегда казалось естественным произносить логИн, я даже не знал долгое время, что по-английски такие слова как login и plugin произносятся с ударением на первый слог.

Был приятно удивлен, что в словарь внесен вариант именно с ударением на второй слог, так что произносите правильно!

Google Translate произносит это слово неверно. Так что ориентироваться на него можно не всегда. А вот в Викисловаре все корректно.

Коммент

Я всегда читал и произносил это слово как коммЕнт, однако в последнее время все чаще встречаю вариант кОммент. Мне понятно, откуда это пошло — в английском языке в слове cOmment ударение падает на первый слог. Однако коммент это еще и сокращение от слова комментАрий (как я его всегда и воспринимал). Мне неизвестны правила переноса ударения при сокращении слов, но я не вижу причин переносить его на первый слог в данном случае.

Аргументы в мою пользу:

  • mOment => момЕнт.
  • коммЕнтить. Кто-то говорит кОмментить?

На Грамоте.ру сначала я нашел только этот ответ. Неизвестно, насколько он новый (даты там нет, к сожалению), но там утверждается, что словарной фиксации для этого слова пока нет, и допустимы оба ударения. Это опровергает Викисловарь, утверждая, что словарная фиксация уже есть (вероятно, там более актуальная информация), и произносить надо кОммент. Он отталкивается от английского слова, совсем не принимая в расчет сокращение русского. Google Translate тоже произносит как кОммент, но ему доверия мало.

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

Составные сущности как скалярные величины (на примере денег)

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

Допустим, у нас есть класс Money со свойствами Amount (количество) и Currency (валюта), в которое реализовано неявное преобразование к decimal и int. Также перегружен оператор + для сложения Money с Money:

Это позволяет безо всяких приведений типов и выковыривания Amount складывать Money не только с Money, но и с decimal и int. Результатом таких операций будет число decimal или int соответственно.

Читать далее

Null[able] Hacks

Знаете ли вы, как работает nullNullable) в различных операциях и логических выражениях в C#? Некоторые моменты неочевидны.

Арифметика

Например, null пожирает остальные значения в арифметических операциях и превращает результат в null:

Где это может пригодиться

Не знаю, где это может пригодиться, но это довольно забавно. А если серьезно, то просто имейте это в виду.

Читать далее

Стойкий оловянный

Мой дневник с войсковых сборов, которые я проходил летом 2002 года.

День: 0,
1, 6, 1, 2, 6, 7, 2, 3, 4, 7, 4, 7, 5,
8, 6, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27

ПисАть очень лениво. Вообще писАть мне лениво уже довольно давно. Сказывается привычка к компу… В связи с этим начинаю писать только в конце 5-го дня. Однако постараюсь вспомнить все, что происходило в предыдущие дни.

Читать далее

Обо мне

Всем привет.

Меня зовут Сергей Атрощенко, также я прячусь за ником «kapxapot» (читается как «кархарот»).

Я программист и веб-мастер, а также немного переводчик и большой любитель игр.

Что такое Кархарот?

Из Википедии:

Кархаро́т (синд. Carcharoth), он же Анфауглир — «сильнейший из волков», выведенный Морготом, опасавшимся Хуана и поставленный для охраны врат Ангбанда. Потомок (а возможно, сын) прародителя волколаков Средиземья Драуглуина. В переводе с синдарина Кархарот обозначает «алая глотка». Откусил руку Берена вместе с Сильмариллом, однако соприкосновение Камня с его внутренностями привело Кархарота в неистовое бешенство. Был убит Хуаном во время охоты на Кархарота в Дориате, но перед этим смертельно ранил как пса, так и Берена.