Skip to content

Instantly share code, notes, and snippets.

@codedokode
codedokode / measure.py
Created July 12, 2022 14:02
Measure true RAM and SWAP consumption in Linux with grouping by user or application
import os
import re
import sys
import pwd
import csv
from dataclasses import dataclass
from typing import TextIO, Optional, Sequence
Pid = int
Uid = int
@codedokode
codedokode / test-xdg-proxy.py
Created March 22, 2020 13:41
Test Python script for xdg-dbus-proxy
import os
import socket
import sys
import binascii
from pprint import pprint
# Tests xdg-dbus-proxy by sending different messages to check whether it
# would crash or not.
#
# How to use:
@codedokode
codedokode / broken-thread-maps.txt
Created June 6, 2018 16:43
Программа обнаружения повторяющихся фрагментов текста и результат ее применения к сломанным тредам
/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 June 5, 2018 19:56
Скрипт исправления сломанных тредов 1, 4b и 15
<?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 December 23, 2016 22:22
Простой прокси-сервер на PHP для изучения и модификации данных, передаваемых между браузером и сторонним сервером
<?php
/**
* Простой прокси-сервер на PHP для изучения и модификации данных,
* передаваемых между браузером и сторонним сервером.
*
* Запуск:
*
* указать URL сайта в $base
* php -S 127.0.0.1:9001 proxy.php
*
@codedokode
codedokode / Особенности сравнения строк.md
Last active March 30, 2021 12:05
Особенности сравнения строк

Эта статья перенесена сюда: 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 April 25, 2024 20:24
Автоматизированное тестирование

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

Обычно после написания кода его проверяют. Если речь о какой-то функции, то можно написать простой скрипт, который будет вызывать ее с разными аргументами, и смотреть, что она вернет. Если вы сделали сайт или приложение, то вы открываете его, жмете ссылки и кнопки, проверяете что все отображается верно. Это называется ручное тестирование или QA (Quality Assurance — контроль качества) — человек проверяет работу программы. Если мы попробуем автоматизировать этот процесс, и написать программу, которая проверяет правильность другой программы, то это называется автоматизированное тестирование.

Главный плюс автоматических тестов — то, что они выполняются намного быстрее, чем ручное тестирование, и вам не надо тратить на это свое время (или время тестировщика). Это позволяет запускать их хоть после каждого изменения в коде.

Также, тесты позволяют «защитить» написанный код. Если кто-то в команде (или вы сами) нечаянно «сломал» ваш код, тесты это обнаружат и укажут, что именн

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

Путь HTML/CSS

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

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

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

Что такое HTML

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


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

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

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