Архив рубрики: Программирование

Мой новый мини-проект: Timezoned

Представляю вам свой новый мини-проект Timezoned — веб-страницу для отслеживания разных часовых поясов и разницы между ними:

https://timezoned.vercel.app/

Регистрация не требуется, вся информация хранится локально в браузере.

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

Заодно наконец попробовал все новомодные веб-технологии. Исходники на GitHub тоже прилагаются: https://github.com/kapxapot/timezoned

Использованные технологии и библиотеки:

  • React / Next.js / TypeScript
  • Tailwind CSS
  • Flowbite React
  • Headless UI
  • React Joyride

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

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.
  • Stop Apache and MySQL.
  • 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!

Произносим правильно 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:

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

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

Читать далее