Skip to content

Instantly share code, notes, and snippets.

codedokode

Block or report user

Report or block codedokode

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@codedokode
codedokode / broken-thread-maps.txt
Created Jun 6, 2018
Программа обнаружения повторяющихся фрагментов текста и результат ее применения к сломанным тредам
View broken-thread-maps.txt
/tmp/threads/pr-thread-4-272705-m2ch-18-may-google.html
Total repeats: 185567 of 454322 bytes
- 0 - 41080 | \n<meta http-equiv="Content-Type" content ... ss="reply" id="27307
first 1 41081 - 85327 | 5"><div class="pst_bar"><span class="pos ... ://m2-ch.ru/pr/res/2
second 1 85328 - 129574 | 5"><div class="pst_bar"><span class="pos ... ://m2-ch.ru/pr/res/2
- 129575 - 129593 | 72705.html#273385">
first 2 129594 - 177012 | &gt;&gt;273385</a><br><br><span class="u ... ;А если надо сюда HT
- 177013 - 177034 | 72705.html#273385"&gt;
second 2 177035 - 224453 | &gt;&gt;273385</a><br><br><span class="u ... ;А если надо сюда HT
- 224454 - 224621 | ML-тегов с аттрибутами добавить? У тебя ... виджет сделан.</span
@codedokode
codedokode / fix-broken-threads.php
Created Jun 5, 2018
Скрипт исправления сломанных тредов 1, 4b и 15
View fix-broken-threads.php
<?php
use Symfony\Component\DomCrawler\Crawler;
use phpClub\Util\DOMUtil;
set_time_limit(0);
require __DIR__ . '/../vendor/autoload.php';
$di = require __DIR__ . '/../src/Bootstrap.php';
/**
@codedokode
codedokode / proxy.php
Created Dec 23, 2016
Простой прокси-сервер на PHP для изучения и модификации данных, передаваемых между браузером и сторонним сервером
View proxy.php
<?php
/**
* Простой прокси-сервер на PHP для изучения и модификации данных,
* передаваемых между браузером и сторонним сервером.
*
* Запуск:
*
* указать URL сайта в $base
* php -S 127.0.0.1:9001 proxy.php
*
@codedokode
codedokode / Особенности сравнения строк.md
Last active Nov 22, 2018
Особенности сравнения строк
View Особенности сравнения строк.md

Эта статья перенесена сюда: https://github.com/codedokode/pasta/blob/master/php/collation.md Ниже идет старая, неподдерживаемая версия статьи.


В программировании строки можно сравнивать. При этом обычно подразумевается алфавитное сравнение, то есть меньше то слово, которое идет раньше по алфавиту. Если начальные буквы совпадают, то меньше то слово, которое короче. Например, "аббат" < "аккорд", "кот" < "котёнок".

Если разобраться в теме сравнения строк на любых языках (а не только на русском), то все выглядит гораздо сложнее и появляется много особенностей, которые надо учитывать(по-английски эта тема называется «collation»). И проблема не в том, что там много букв из разных алфавитов, а в том что одни и те же буквы имеют разный порядок в разных языках. Например, буквы с точечками и черточками сравниваются по-разному: http://en.wikipedia.org/wiki/Alphabetical_order#Language-specific_conventions

В некоторых языках буквы вроде å идут после z, в некоторых между a и b. В некорых (английский) они им

@codedokode
codedokode / Тестирование.md
Last active Sep 19, 2019
Автоматизированное тестирование
View Тестирование.md

Автоматизированное тестирование

Если ты пишешь код, то наверняка его тестируешь. Если речь о какой-то функции, то ты можешь вызывать ее с разными аргументами, и смотреть, что она вернет. Если ты сверстал сайт, то ты открываешь его в браузере, жмешь ссылки и кнопки, проверяешь что все сделано верно. Это называется ручное тестирование — человек проверяет работу программы. Нельзя ли эту задачу переложить на плечи роботов? Обычно можно, и это называется автоматизированное тестирование.

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

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

В больших компаниях может быт

@codedokode
codedokode / getset.sublime-snippet
Created Nov 9, 2014
Сниппет для создания геттеров/сеттеров в Sublime Text 3. Вызывается через gs [tab]
View getset.sublime-snippet
<snippet>
<content><![CDATA[
public function get${1/(?:^|_)(\w)/\U$1$2/g$1}()
{
return \$this->$1;
}
/**
* @return self
*/
@codedokode
codedokode / Путь HTML.md
Last active Sep 26, 2019
Путь HTML/CSS
View Путь HTML.md

Путь HTML/CSS

Это список ссылок и заданий, которые помогут тебе изучить языки HTML/CSS на достаточном уровне. HTML и CSS используется для верстки (создания) веб-страничек — тех самых, которые ты видишь в браузере когда открываешь какой-то сайт. Задания несложные и надо решить их все.

Станешь ли ты полноценным верстальщиком, пройдя этот путь? Скорее нет, чем да. С одной стороны, ты научишься верстать веб-страницы, с другой стороны от верстальщиков в большинстве случаев требуют дополнительно знать язык программирования Javascript (и популярные библиотеки вроде jQuery, jQuery UI). Так что воспринимай это как первую (короткую) половину пути.

Время, требуемое на изучение материала и решение всех заданий зависит от тебя, ориентировочно это занимает от 2 до 8 недель. В конце тебя ждет главное задание — сверстать страницу из макета.

Что такое HTML

View Зачем нужны исключения в PHP.md

Этот урок переехал в мой гитхаб: https://github.com/codedokode/pasta/blob/master/php/exceptions.md - ниже представлена старая версия, потому советую перейти и прочитать новую.


Как использовать исключения в PHP

Если ты изучаешь ООП, ты наверняка натыкался на исключения. В мануале PHP описаны команды try/catch/throw и finally (доступна начиная с PHP 5.5), но не объясняется толком как их использовать. Чтобы разобраться с этим, надо узнать почему они вообще были придуманы.

А придуманы они были, чтобы сделать удобную обработку ошибок.

@codedokode
codedokode / Паттерны работы с базой данных.md
Last active Sep 12, 2019
Паттерны работы с базой данных
View Паттерны работы с базой данных.md

Это старая версия урока, которая больше не обновляется. Новая версия расположения тут: https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md


Паттерны работы с базой данных

Разберемся, как правильно с применением ООП сохранять и загружать данные из базы. Существуют такие подходы:

@codedokode
codedokode / Функции работы со строками в PHP и utf-8.md
Last active Mar 25, 2019
Функции работы со строками в PHP и utf-8
View Функции работы со строками в PHP и utf-8.md

Статья переехала в мой гитхаб: https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md . Ниже идет устаревшая и неточная версия.


Некоторые функции PHP (strlen, substr, а также обращение к строке как к массиву: $str[0]) не работают с многобайтовыми кодировками (вроде utf-8). В utf-8 1 символ закодирован с помощью от 1 до 6 байтов, а эти функции думают, что 1 буква всегда кодируется одним байтом. По этой причине они ломают символы, в результате получаются битые символы и ничего не работает. Потому вместо них надо использовать mb_ функции например mb_strlen, mb_substr. Вместо доступа к строке как к массиву надо использовать mb_substr.

Если тебе интересно, почему эти функции поддерживают только однобайтные кодировки, а не многобайтные, то причина в том, что они очень старые и написаны в то время (лет 40 назад) когда utf-8 и многобайтных кодировок еще не было.

Давай разберем пример. Допустим, у нас есть строка из русской буквы «щ» в кодирове utf-8. Попытаемся взять первую букву с п

You can’t perform that action at this time.