<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Блог on BlackCrystal</title><link>https://blackcrystal.net/ru/blog/</link><description>Recent content in Блог on BlackCrystal</description><generator>Hugo</generator><language>ru</language><lastBuildDate>Wed, 08 Nov 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://blackcrystal.net/ru/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>WineHQ проблема с Ubuntu 22.04</title><link>https://blackcrystal.net/ru/blog/winehq-ubuntu-22-04/</link><pubDate>Wed, 08 Nov 2023 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/winehq-ubuntu-22-04/</guid><description>&lt;p&gt;С обновлением Ubuntu 20.04 на 22.04 пропала возможность запуска целой кучи маленьких полезных виндовых программулек. Причина - не инсталлится Wine.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt install --install-recommends winehq-stable wine-stable
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Reading package lists... Done
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Building dependency tree... Done
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Reading state information... Done
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Some packages could not be installed. This may mean that you have
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;requested an impossible situation or &lt;span class="k"&gt;if&lt;/span&gt; you are using the unstable
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;distribution that some required packages have not yet been created
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;or been moved out of Incoming.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The following information may &lt;span class="nb"&gt;help&lt;/span&gt; to resolve the situation:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The following packages have unmet dependencies:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; libgphoto2-6:i386 : Depends: libgd3:i386 &lt;span class="o"&gt;(&lt;/span&gt;&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt; 2.1.0~alpha~&lt;span class="o"&gt;)&lt;/span&gt; but it is not going to be installed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;E: Unable to correct problems, you have held broken packages.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Пришлось нормально так попотеть, чтобы понять в чём проблема и найти решение.&lt;/p&gt;</description></item><item><title>Команды терминала для работы с базами данных MySQL</title><link>https://blackcrystal.net/ru/blog/mysql-terminal-commands/</link><pubDate>Tue, 20 Aug 2019 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/mysql-terminal-commands/</guid><description>&lt;p&gt;Привет вам, дорогие, как это раньше называлось, &lt;em&gt;вебмастеры&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Сегодня мы познакомимся с несколькими командами терминала, полезными как при работе с большими дампами базы данных, так и не очень. Всё что нам понадобится - доступ к командной строке на сервере посредством ssh, mosh или putty.&lt;/p&gt;
&lt;p&gt;создать базу данных
&lt;code&gt;mysqladmin create названиебазыданных&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;убить базу
&lt;code&gt;mysqladmin drop названиебазыданных&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;экспортировать базу в файл
&lt;code&gt;mysqldump названиебазыданных &amp;gt; имяфайла.sql&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;импортировать базу из файла
&lt;code&gt;mysql названиебазыданных &amp;lt; имяфайла.sql&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Лайвхаки коммандной строки</title><link>https://blackcrystal.net/ru/blog/command-line-lifehacks/</link><pubDate>Tue, 07 May 2019 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/command-line-lifehacks/</guid><description>&lt;p&gt;Сохраняет список графических файлов, площадь которых меньше 100000 пикселей&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;(&lt;/span&gt; find jpg_renamed/ -name &lt;span class="s1"&gt;&amp;#39;*.jpg&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; xargs -L1 identify -format &lt;span class="s2"&gt;&amp;#34;%[fx:w*h] %d/%f\n&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; awk &lt;span class="s1"&gt;&amp;#39;$1 &amp;lt; 100000 { print $2 }&amp;#39;&lt;/span&gt; &amp;gt; to_delete.txt &lt;span class="o"&gt;)&lt;/span&gt; 2&amp;gt; errors.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Если неопознанные как графика файлы не нужны, можно обойтись только тем что в скобках&lt;/p&gt;</description></item><item><title>Полезные скрипты для сайта Vkontakte</title><link>https://blackcrystal.net/ru/blog/vkontakte-scripts/</link><pubDate>Wed, 15 Aug 2018 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/vkontakte-scripts/</guid><description>&lt;p&gt;Продолжаем публиковать полезные скрипты для сайтов, на которых многие из нас проводят немало времени. На этот раз полезные скрипты будут для сайта &lt;a href="https://vk.com/"&gt;vk.com&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="переворачиваем-видео-по-горизонтали"&gt;Переворачиваем видео по горизонтали&lt;/h2&gt;
&lt;p&gt;&lt;figure class="md-figure"&gt;
 &lt;img src="https://blackcrystal.net/img/blog/flip-vk-video-2_hu_8429e71e1df66d00.webp" alt="" loading="lazy" width="452" height="279"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="md-figure"&gt;
 &lt;img src="https://blackcrystal.net/img/blog/flip-vk-video-1_hu_1851eb3d95a13fc7.webp" alt="" loading="lazy" width="452" height="279"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Последнее время видео стали загружать перевернутыми, поэтому смотреть &amp;ldquo;как есть&amp;rdquo; их можно, но не особо приятно. Ликвидируем эту проблему путем переворачивания видеоплеера по горизонтали.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Проще всего добавить скрипт в закладки (Bookmarks)&lt;/strong&gt; нажатием правой кнопкой мышки на ссылку Перевернуть видео по горизонтали и запускать её при проигрывании любого перевёрнутого видео на сайте Вконтакте.&lt;/p&gt;</description></item><item><title>Firefox Quantum: версия для разработчика</title><link>https://blackcrystal.net/ru/blog/firefox-quantum-developer/</link><pubDate>Sun, 14 Jan 2018 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/firefox-quantum-developer/</guid><description>&lt;p&gt;Было достаточно просто найти и установить свежий релиз Firefox. Однако с версией &lt;em&gt;для разработчика&lt;/em&gt; пришлось попотеть. Предлагаются варианты:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;скачивание вручную и пляски с бубном потому как клик по ссылкам в терминале и других программах не открывает ссылок&lt;/li&gt;
&lt;li&gt;из PPA устанавливается не-developer версия&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Перепробовав все варианты, предлагаю самый лёгкий и быстрый способ установки &lt;a href="https://www.mozilla.org/en-US/firefox/developer/"&gt;Firefox Quantum Developer Edition&lt;/a&gt; в &lt;a href="https://www.ubuntu.com/download/desktop"&gt;Ubuntu 16&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="устанавливаем-firefox-quantum-developer-edition-в-ubuntu-16-при-помощи-ubuntu-make"&gt;Устанавливаем Firefox Quantum Developer Edition в Ubuntu 16 при помощи Ubuntu Make&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install ubuntu-make
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umake web firefox-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="удаляем-firefox-quantum-developer-edition-из-ubuntu-16-при-помощи-ubuntu-make"&gt;Удаляем Firefox Quantum Developer Edition из Ubuntu 16 при помощи Ubuntu Make&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umake web firefox-dev -r
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo ppa-purge ppa:ubuntu-desktop/ubuntu-make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Убираем www и перенаправляем на защищенный протокол в Apache</title><link>https://blackcrystal.net/ru/blog/apache-www-https-redirect/</link><pubDate>Fri, 10 Nov 2017 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/apache-www-https-redirect/</guid><description>&lt;p&gt;Мне кажется прошло время, когда приставка &lt;strong&gt;www&lt;/strong&gt; была чем-то необходимым при создании сайта. Сейчас больше ценится лаконичность адреса, наличие шифрования (HTTPS) и единого домена для лучшей индексации (canonical).&lt;/p&gt;
&lt;p&gt;В этой статье мы рассмотрим настройку веб-сервера Apache для того чтобы перенести пользователя на домен без или с приставкой www в защищенном режиме.&lt;/p&gt;
&lt;h2 id="вступление"&gt;Вступление&lt;/h2&gt;
&lt;p&gt;Тут я покажу как настроить сайт, чтобы убрать www (или наоборот) и поменять HTTP на безопасный HTTPS, используя конфигурацию сервера Apache. Если быть точным, конфигурация перенаправит следующие адреса:&lt;/p&gt;</description></item><item><title>Терминал bash и автодополнение</title><link>https://blackcrystal.net/ru/blog/bash-autocomplete/</link><pubDate>Mon, 06 Mar 2017 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/bash-autocomplete/</guid><description>&lt;p&gt;В Ubuntu функция автодополнения часто просто не работает. Например, если зайти пользователем root в Ubuntu 16 Server, нажатие кнопки TAB никак не помогает с командами, только с файлами. Возможно пользователь был создан не совсем корректно и ему перенеслись не все файлы.&lt;/p&gt;
&lt;p&gt;Чтобы автодополнение заработало, необходимо переустановить пакет &lt;code&gt;bash-completion&lt;/code&gt; и скопировать шаблон &lt;code&gt;/etc/skel/.bashrc&lt;/code&gt; в домашнюю папку пользователя:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install --reinstall bash-completion
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp /etc/skel/.bashrc ~/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;И перезайти.&lt;/p&gt;
&lt;p&gt;В Ubuntu 16 сразу станет понятно, работает ли шаблон и пакет автодополнения - коммандная строка станет цветной и можно пользоваться кнопкой TAB после комманд &lt;code&gt;git&lt;/code&gt; или &lt;code&gt;apt&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Оптимальная настройка Mysql</title><link>https://blackcrystal.net/ru/blog/mysql-optimal-tuning/</link><pubDate>Sat, 04 Mar 2017 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/mysql-optimal-tuning/</guid><description>&lt;p&gt;Конфигурационные параметры по умолчанию в Mysql рассчитаны на небольшие базы данных, работающие под малыми нагрузками на скромном железе. Настройка некоторых параметров может повысить производительность Вашей базы данных в несколько раз.&lt;/p&gt;
&lt;p&gt;Процесс оптимальной настройки Mysql состоит из двух частей — первоначальная настройка и корректировка параметров во время работы. Корректировка параметров в рабочем режиме во многом зависит от специфики Вашей системы и ее мониторинга — тут особых правил не существует. Для стартовой настройки есть ряд рекомендаций.&lt;/p&gt;</description></item><item><title>Фейсбук для нелюбителей пощёлкать</title><link>https://blackcrystal.net/ru/blog/facebook-without-clicks/</link><pubDate>Sat, 04 Mar 2017 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/facebook-without-clicks/</guid><description>&lt;p&gt;Это набор действий, упрощающих жизнь пользователя &lt;a href="http://facebook.com"&gt;той самой&lt;/a&gt; социальной сети в некоторых ситуациях.&lt;/p&gt;
&lt;p&gt;Для того, чтобы вместо вас по спискам щёлкал сам браузер, нужно научиться запускать скрипты в консоли. Вкратце, вот как.&lt;/p&gt;
&lt;p&gt;В Firefox нажать &lt;strong&gt;Shift + F4&lt;/strong&gt; чтобы открыть окно для ввода скриптов.&lt;/p&gt;
&lt;p&gt;&lt;figure class="md-figure"&gt;
 &lt;img src="https://blackcrystal.net/img/blog/remove-from-restricted-2_hu_c216aea5e31038c2.webp" alt="" loading="lazy" width="640" height="508"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Нажать Ctrl+V. Если Firefox не позволяет вставлять, наберите волшебное слово пожалуйста &lt;strong&gt;allow pasting&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="md-figure"&gt;
 &lt;img src="https://blackcrystal.net/img/blog/remove-from-restricted-4_hu_9abc5394802726f.webp" alt="" loading="lazy" width="640" height="508"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Вы готовы для запускания скриптов, теперь идём в Facebook.&lt;/p&gt;
&lt;h2 id="массовое-добавление-друзей-в-список"&gt;Массовое добавление друзей в список&lt;/h2&gt;
&lt;p&gt;Открываем список, например Restricted, нажимаем кнопку &lt;strong&gt;Manage List&lt;/strong&gt;. Появится диалоговое окошко для изменения списка. Переключаемся на &lt;strong&gt;Friends&lt;/strong&gt; и видим друзей, которых можно добавить в список.&lt;/p&gt;</description></item><item><title>А какая у вас платформа виртуализации?</title><link>https://blackcrystal.net/ru/blog/virtualization-platform/</link><pubDate>Fri, 10 Feb 2017 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/virtualization-platform/</guid><description>&lt;p&gt;&lt;figure class="md-figure"&gt;
 &lt;img src="https://blackcrystal.net/img/blog/CVUbwR_VEAAhthR_hu_81ca30d8f141d0ce.webp" alt="" loading="lazy" width="1024" height="309"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Раньше не приходилось задаваться таким вопросом, но вот свершилось. И я прям немного застрял с поиском названия &lt;strong&gt;платформы виртуализации&lt;/strong&gt; на наших облачных серверах. Поэтому, вот памятка для себя.&lt;/p&gt;
&lt;p&gt;Linux:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dmesg &lt;span class="p"&gt;|&lt;/span&gt; grep -i hypervisor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Windows:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systeminfo &lt;span class="p"&gt;|&lt;/span&gt; findstr /i model
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Включение/выключение touch устройств в Ubuntu 14.04</title><link>https://blackcrystal.net/ru/blog/touch-toggle-ubuntu/</link><pubDate>Thu, 18 Aug 2016 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/touch-toggle-ubuntu/</guid><description>&lt;p&gt;Для выключения тачпада, порой мешающего набору текста, на моём стареньком Dell Latitude была классная комбинация функциональной кнопки с какой-то из верхнего ряда клавиатуры, прекрасно работало и в целом было полезно. Создатели Dell Inspiron 13 7000 почему-то об этом забыли, очень жаль. К тому же, добавился экран, в который иногда тыкают пальцами указывая что-нибудь, при этом нажимая всё подряд. В общем, захотелось мне эти излишества время от времени выключать.&lt;/p&gt;
&lt;p&gt;Погуглив тему, я узнал что не все йогурты одинаково полезны способы работают с моим тачпадом, но точно работает вот этот:&lt;/p&gt;</description></item><item><title>Восстановление файлов после git rm -rf .</title><link>https://blackcrystal.net/ru/blog/git-rm-recovery/</link><pubDate>Wed, 17 Aug 2016 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/git-rm-recovery/</guid><description>&lt;p&gt;Обычно я так не делаю, но вот приключилось. Ситуа: после долгого рабочего дня перенасыщенной событиями рабочей недели, решаю наконец сделать коммит многострадального нового функционала.&lt;/p&gt;
&lt;p&gt;Так получилось, что ни правильно оформленного бренча, ни промежуточных коммитов я не делал, просто искал варианты с какой стороны подступиться к заданию и в итоге, практически его выполнив, делаю коммит:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit &lt;span class="o"&gt;(&lt;/span&gt;aborted, что-то лишнее добавил&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;(&lt;/span&gt;добавил это что-то в gitignore&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git rm -r -f . &lt;span class="o"&gt;(&lt;/span&gt;на автопилоте ляпнул -f вместо --cached&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Убило все рабочие файлы, включая изменённые. Перед глазами пронеслось всё что накодил за эти пару недель. В день по три копейки, конечно, но в итоге многовато. Восстанавливать из файловой системы стрёмно и маловероятно, ходил-бродил боясь дунуть на компутер&amp;hellip;&lt;/p&gt;</description></item><item><title>Как вернуть стандартные скроллбары в Ubuntu 14.04</title><link>https://blackcrystal.net/ru/blog/ubuntu-scrollbars/</link><pubDate>Thu, 21 Jul 2016 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/ubuntu-scrollbars/</guid><description>&lt;p&gt;Мне известно по крайней мере десяток излишеств, которые ввели чудо-дизайнеры операционной системы Ubuntu, которые очень сложно приживаются у меня. Да и у многих, думаю, кто постоянно работает в ней. Одно из новшеств &lt;strong&gt;overlay-scrollbars&lt;/strong&gt; - скроллбары, которые сложно найти
и легко потерять
.&lt;/p&gt;
&lt;p&gt;&lt;figure class="md-figure"&gt;
 &lt;img src="https://blackcrystal.net/img/blog/Screenshot_Scrollbars_hu_e7756fb9ab68a6fb.webp" alt="" loading="lazy" width="864" height="632"&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Есть несколько интересных решений, не буду о них даже упоминать, потому как для себя выбрал наипростейшее в сочитании с наилогичнейшим - убрат пакет, отвечающий за отрисовку скрывающихся скроллбаров.&lt;/p&gt;</description></item><item><title>Проверка персонального кода в Synfony 1.4 sfValidatorIsikukood</title><link>https://blackcrystal.net/ru/blog/symfony-isikukood-validator/</link><pubDate>Wed, 25 Mar 2015 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/symfony-isikukood-validator/</guid><description>&lt;p&gt;Пример создания собственного валидатора персонального кода в Symfony.&lt;/p&gt;
&lt;p&gt;В одном проекте потребовалось использовать эстонские личные коды (isikukood), которые даются каждому жителю этого государства и имеют возможность быть проверенными на валидность без запросов в какие-либо регистры.&lt;/p&gt;
&lt;p&gt;Код содержит 11 цифр, 7 из которых обозначают пол, год, месяц и дату рождения, три последующие цифры - порядковый номер, и последняя цифра контрольная сумма. Ей то я и займусь.&lt;/p&gt;
&lt;p&gt;Формула для вычисления контрольной суммы известна благодаря горячим обсуждениям в &lt;a href="http://forum.ee/t161991/funktciya-validatcii-isikukoda"&gt;этой теме на forum.ee&lt;/a&gt;. Пожалуй, я использую &lt;a href="http://forum.ee/t161991/funktciya-validatcii-isikukoda/page__p__2295976#entry2295976"&gt;свой вариант&lt;/a&gt;, так как мне он наиболее симпатичен. Кто бы сомневался ;)&lt;/p&gt;</description></item><item><title>Колонки в CSS</title><link>https://blackcrystal.net/ru/blog/css-columns/</link><pubDate>Sat, 01 Nov 2014 00:00:00 +0000</pubDate><guid>https://blackcrystal.net/ru/blog/css-columns/</guid><description>&lt;p&gt;Колонки. Этот простой, но почему-то за столько лет не ставший ни разу универсальным, элемент, изобретается снова и снова. И всякий раз либо верстальщик лепит как ему удобно это, либо использует фреймворк. К примеру, популярный нынче &lt;a href="http://getbootstrap.com/css/"&gt;Bootstrap&lt;/a&gt;, здесь колонки и ряды разложены по иерархиям, что иногда вполне &amp;ldquo;сойдёт&amp;rdquo;. Делая один не маленький проект с использованием Bootstrap мы упёрлись в то, что разметки и стилей становится больше чем информации. Мыши плакали, кололись и думали, а не перейти ли нам обратно на табличную верстку&amp;hellip;&lt;/p&gt;</description></item></channel></rss>