Skip to content

Instantly share code, notes, and snippets.

Простейший пример:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Тест загрузки файла</title>
</head>

Предположим, у нас есть скрипт givefile.php. Допустим, мы откуда-то уже взяли содержимое файла и хотим отдать его под именем somefile.txt:

<?php
$body = 'Это содержимое файла';

header("Content-type: application/octet-stream"); // этот заголовок нужен, 
                                                  // чтобы браузер сразу предложил сохранить файл на диск
header("Content-disposition: filename=somefile.txt"); // а в этом заголовке передается имя файла
@1234ru
1234ru / mysql.md
Last active June 8, 2020 12:52
Разное про СУБД MySQL

Точечная замена элементов в JSON-полях

INSERT INTO some_table 
  (id, json_column)
VALUES
  (1, '{"x": 1000}')
ON DUPLICATE KEY UPDATE
  json_column = JSON_SET(json_column, "$.x", 1000)
@1234ru
1234ru / PhpStorm.md
Last active July 12, 2021 11:52
Всякое про среду PhpStorm

Что нравится

  • Красивый! Приятно смотреть. Все элементы интерфейса выполнены гладко, есть ненавязчивые подсказки.

    • Прозрачные полосы прокрутки (scroll bars). Не отнимают места от области редактирования. Умно!
  • Автозаполнение. Красиво выглядит и удобно работает, снабжено подсказками.

    • Подставляются даже переменные в Sass! Не говоря уже о CSS-свойствах и их значениях.
    • Подставляются классы из HTML (из числа классов в текущем файле)! Удобно, когда нужно сделать вложенный элемент по БЭМ (типа someclass-mod: при наборе someclass подставится, останется добавить только -mod)
    • Подставляются сокращения из Emmet, причем перед подстановкой они отображаются в списке с пометкой "Emmet abbreviation" (при этом показывается результат подстановки), благодаря чему их можно тут же изучать, узнавая новые. Характерные примеры:
  • m0, m:0 -> margin: 0;, m:0:a -> margin: 0 auto;

@1234ru
1234ru / gifsicle.md
Last active January 17, 2022 00:52
Работа с анимированными gif-файлами

Общий формат команды

gifsicle исходный_файл.gif -o конечный_файл.gif [опции]

Также поддерживается вариант без префиксов для указания исходного и конечного файла:

@1234ru
1234ru / Sass.md
Last active August 19, 2022 12:24
Заметки об использовании Sass

Source maps

Редактировать исходники в браузере оказалось не особенно-то и удобно:

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

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

Sourcemaps, тем не менее, остаются полезными для определения исходного положения того или иного стилевого правила (т.е. "только для чтения").

// IE11 friendly syntax
var _Local = _Local || {};
_Local.FIAS = function() {};
/**
* @typedef {Object} FIAS~fieldsConfigItem
* @property {string} type - $.fias.types.city|street|etc.
* @property {string|void} selector - input[name="street"]
@1234ru
1234ru / https-ssl.md
Last active January 12, 2023 10:16
Настройка работы сайта по протоколу HTTPS, получение и установка SSL-сертификата

Получение сертификата

Есть множество центров сертификации, которые ищутся по запросу "купить ssl сертификат".

Существует три уровня сертификатов, которые отличаются скрупулезностью проверки запросившей сертификат организации и, соответственно, стоимостью (в несколько раз). При этом технически степень защиты на всех уровнях одинаковая.

Самый простой сертификат - уровня DV - стоит в пределах 2000 руб. на год (январь 2023 г.). Такой сертификат обычно действует и на домен с www, помимо корневого. (Например, GlobalSign AlphaSSL на firstssl.ru - 1872 руб.)

Срок действия сертификата не включает день "до". Например, если срок - до 2023-01-13, то сертификат действителен до 12-го числа включительно.

Разное

  • oчистка истории командной строки - HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU (взято с itprotoday.com)

  • получение значения переменой в Windows Registry: reg query РАЗДЕЛ /v ИМЯ_ПЕРЕМЕННОЙ, например:
    reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path
    (взято с dowdandassociates.com)

  • копирование в буфер обмена из командной строки

@1234ru
1234ru / dev.md
Last active April 18, 2023 12:00
Первые шаги при развёртывании окружения для разработки

Подготовка сервера разработки

  1. Создаем общий каталог для проекта. Там будет располагаться каталог веб-сервера (или несколько, если одновременно будут существовать несколько копий), находиться служебные скрипты и пр. Например, /sites/mysite (здесь и далее обозначен как @).

Организация доступа к production-серверу (если есть)

  1. Если рабочая площадка уже есть - получаем доступ по SSH, логинимся.

  2. Проверяем, есть ли на сервере git (если нет - выясняем, можно ли его установить).