This repository was archived by the owner on Mar 4, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfeed.rss
167 lines (152 loc) · 54 KB
/
feed.rss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content"><channel><title>Sergei Nazarenko</title><description>Блог о программировании и не только</description><link>https://nazares.github.io</link><language>en</language><lastBuildDate>Thu, 12 Nov 2020 00:18:26 +0300</lastBuildDate><pubDate>Thu, 12 Nov 2020 00:18:26 +0300</pubDate><ttl>250</ttl><atom:link href="https://nazares.github.io/feed.rss" rel="self" type="application/rss+xml"/><item><guid isPermaLink="true">https://nazares.github.io/howto/adobe-flash-player-eol</guid><title>Adobe объявила дату окончания поддержки Flash</title><description>В новый год без Adobe Flash</description><link>https://nazares.github.io/howto/adobe-flash-player-eol</link><pubDate>Wed, 11 Nov 2020 23:53:00 +0300</pubDate><content:encoded><![CDATA[<h1>Adobe объявила дату окончания поддержки Flash</h1><img src="https://nazares.github.io/Blog/img/howto/adobe-flash-player-eol/flash-logo.png" alt="flash-logo"/><p>Ранее, в далеком 2017 году компания Adobe объявила о том что прекратит поддержку Flash в конце 2020 года точная дата не указывалась.</p><p>В этой <a href="https://blog.adobe.com/en/publish/2017/07/25/adobe-flash-update.html#gs.knnz5j">статье</a> разработчики писали о том, что такие стандарты, как HTML5, WebGL WebAssembly уже достаточно “повзрослели” и способны полностью заменить собой Flash в 3D-графике, стриминге и тд.</p><p>Честно говоря, для меня эта технология умерла еще тогда, я даже помню статьи на эту тему, все вокруг кричали о том что Flash умер, RIP Adobe Flash и т.д. И все это время Adobe Flash оставался у меня в системе, ну стоит, да стоит, кушать не просит, я даже уже и забыл про него.<br>Но тут вдруг, буквально на днях, а точнее вчера, выскочило сообщение о том, что мол <span class="quote">Баста, карапузики – кочилися танцы</span> и 31 декабря 2020 года Adobe Flash Player перестанет полностью поддерживаться, после чего будут удалены все ссылки на скачивание а так же он будет исключен из браузеров Google Chrome начиная с версии 68, Microsoft Edge, Firefox и тд. В свете чего Adobe рекомендует удалить Flash Player из системы.</p><img src="https://nazares.github.io/Blog/img/howto/adobe-flash-player-eol/flash-notice.png" alt="adobe-flash"/><p>Для тех кто не знает как это сделать, инструкции для <a href="https://helpx.adobe.com/ru/flash-player/kb/uninstall-flash-player-windows.html">Windows</a> и <a href="https://helpx.adobe.com/ru/flash-player/kb/uninstall-flash-player-mac-os.html">Mac</a> пользователей.</p><p>Войдем в новый год без Flash господа!</p>]]></content:encoded></item><item><guid isPermaLink="true">https://nazares.github.io/howto/where-are-the-keys</guid><title>Клавиши Page Up, Page Down, Home, End, Enter и Delete на клавиатуре Magic Keyboard</title><description>Расширенные функции клавиш клавиатуры Apple Magic Keyboard</description><link>https://nazares.github.io/howto/where-are-the-keys</link><pubDate>Sun, 1 Nov 2020 04:33:00 +0300</pubDate><content:encoded><![CDATA[<h1>Где клавиши Page Up, Page Down, Home, End, Enter и Delete?</h1><img src="https://nazares.github.io/Blog/img/howto/where-are-the-keys/keyboard.png" alt="keyboard"/><p>В то время как Apple Клавиатуры Magic Keyboard c цифровой панелью содержат специальные клавиши <strong>Home</strong>, <strong>End</strong>, <strong>Page Up</strong> и <strong>Page Down</strong>, их компактные клавиатуры, Magic Keyboard (например, поставляются с iMac или на ноутбуках) лишены этих клавиш. Вместо этого у них используется расширенный функционал некоторых клавиш. Apple не рассказывает про двойную функцию всех клавиш и поэтому далеко не все знают про эту возможность!</p><p>Итак, когда вы удерживаете функциональную клавишу (<kbd>fn</kbd>) и нажимаете определенные клавиши на клавиатуре Apple, это активирует дополнительные функции этих клавиш.</p><p>Вот общие из них которые вам следует знать:</p><table><tbody><tr><td><kbd>⇞</kbd> Page Up</td><td><kbd>fn</kbd> – <kbd>↑</kbd> Up</td></tr><tr><td><kbd>⇟</kbd> Page Down</td><td><kbd>fn</kbd> – <kbd>↓</kbd> Down</td></tr><tr><td><kbd>↖︎</kbd> Home</td><td><kbd>fn</kbd> – <kbd>←</kbd> Left</td></tr><tr><td><kbd>↘︎</kbd> End</td><td><kbd>fn</kbd> – <kbd>→</kbd> Right</td></tr><tr><td><kbd>⌤</kbd> Enter</td><td><kbd>fn</kbd> – <kbd>↩︎</kbd> Return</td></tr><tr><td><kbd>⌦</kbd> Delete</td><td><kbd>fn</kbd> – <kbd>⌫</kbd> Backspace</td></tr></tbody></table>]]></content:encoded></item><item><guid isPermaLink="true">https://nazares.github.io/howto/gitsheet</guid><title>GitSheet</title><description>Simple git cheatsheet.</description><link>https://nazares.github.io/howto/gitsheet</link><pubDate>Tue, 27 Oct 2020 01:30:00 +0300</pubDate><content:encoded><![CDATA[<h1>GitSheet</h1><h2>Simple git cheatsheet</h2><h4>Branches</h4><table><tbody><tr><td>git branch</td><td>List all local branches.</td></tr><tr><td>git branch -a</td><td>List remote and local branches.</td></tr><tr><td>git checkout -b [branch_name]</td><td>Create a local branch and switch to it.</td></tr><tr><td>git checkout [branch_name]</td><td>Switch to an existing branch.</td></tr><tr><td>git push origin [branch_name]</td><td>Push branch to remote.</td></tr><tr><td>git branch -m [new_name]</td><td>Rename current branch.</td></tr><tr><td>git branch -d [branch_name]</td><td>Delete a local branch.</td></tr><tr><td>git push origin :[branch_name]</td><td>Delete a remote branch.</td></tr></tbody></table><h4>Logs</h4><table><tbody><tr><td>git log --oneline</td><td>Show commit history in single line.</td></tr><tr><td>git log -[N]</td><td>Show commit history for last [N] commits.</td></tr><tr><td>git log -p -[N]</td><td>Show commit history for last [N] commits with diff.</td></tr><tr><td>git diff</td><td>Show all local file changes in the working tree.</td></tr><tr><td>git diff [file]</td><td>Show changes made to a [file].</td></tr><tr><td>git blame [file]</td><td>Show who changed what & when in a file.</td></tr><tr><td>git remote show origin</td><td>Show remote branches and their mapping to local.</td></tr></tbody></table><h4>Cleanup</h4><table><tbody><tr><td>git clean -f</td><td>Delete all untracked files.</td></tr><tr><td>git clean -df</td><td>Delete all untracked files and directories.</td></tr><tr><td>git checkout -- .</td><td>Undo local modifications to all files.</td></tr><tr><td>git reset HEAD [file]</td><td>Unstage a file.</td></tr></tbody></table><h4>Tags</h4><table><tbody><tr><td>git pull --tags</td><td>Get remote tags.</td></tr><tr><td>git checkout [tag_name]</td><td>Switch to an existing tag.</td></tr><tr><td>git tag</td><td>List all tags.</td></tr><tr><td>git tag -a [tag_name] -m "tag message"</td><td>Create a new tag.</td></tr><tr><td>git push --tags</td><td>Push all tags to remote repo.</td></tr></tbody></table><h4>Stashes</h4><table><tbody><tr><td>git stash save "stash name" && git stash</td><td>Save changes to a stash.</td></tr><tr><td>git stash list</td><td>List all stashes.</td></tr></tbody></table>]]></content:encoded></item><item><guid isPermaLink="true">https://nazares.github.io/howto/how-to-fix-auto-unlock-after-watchOS-7</guid><title>Исправляем авто разблокировку Mac при помощи Apple Watch</title><description>После обновления watchOS 7 ваш Mac перестал выполнять разблокировку, в этом How To, я расскажу как это исправить.</description><link>https://nazares.github.io/howto/how-to-fix-auto-unlock-after-watchOS-7</link><pubDate>Sun, 25 Oct 2020 00:05:00 +0300</pubDate><content:encoded><![CDATA[<h1>Исправляем авто разблокировку Mac by Apple Watch</h1><p>После последнего обновления watchOS перестали выполнять автоматическую разблокировку c помощью часов мои Mac'и, захожу в настройки и вижу вот такую картину:</p><img src="https://nazares.github.io/Blog/img/howto/how-to-fix-auto-unlock-after-watchOS-7/security_one.png" alt="security_one"/><p><span class="quote">Ну не беда!</span> – подумалось мне. <span class="quote">Подумаешь, галочки слетели, ща вернем все взад и будет все окэ!</span>
</p><p>Но, не тут-то было, при попытке установить галочку <strong>Use your Apple Watch to unlock apps and your Mac</strong>, я получил вот такую ошибку:</p><img src="https://nazares.github.io/Blog/img/howto/how-to-fix-auto-unlock-after-watchOS-7/security_two.png" alt="security_two"/><p>Поковырявшись в Console, я обнаружил в логах кучу ошибок связанных с AutoUnlock, которые как-бы намекали мне, что на моем Mac имеется куча проблем с ключами и plist файлами, которые не сбрасывались должным образом.</p><h2>Как это исправить ?</h2><p>Да очень просто, заходим в приложение <strong>Keychain Access</strong> в глобальном меню выбираем <strong>View (Вид) -> Show Invisible Items (Показать невидимые объекты)</strong>, далее в строке поиска набираем <code>auto unlock</code>, выделяем все и удаляем.</p><img src="https://nazares.github.io/Blog/img/howto/how-to-fix-auto-unlock-after-watchOS-7/keychain_one.png" alt="keychain_one"/><p>Потом, так-же набираем <strong>autounlock</strong> без пробела и удаляем все 4 пункта: Не беспокойтесь система их восстановит.</p><p>Далее, открываем <strong>Finder</strong> и нажимаем сочетание клавиш <span class="shortcut highlighted">⇧⌘G</span> (Shift+Command+G) или пункт меню <strong>Go -> Go to Folder</strong>, вводим <strong>~/Library/Sharing/AutoUnlock</strong> и в этой папке удаляем оба файла <strong>ltk.plist</strong> и <strong>pairing-records.plist</strong></p><p>После этого идем в системные настройки и пытаемся поставить галочку еще раз, возможно, галочку придется ставить дважды, если в первый раз выскочит ошибка.</p><img src="https://nazares.github.io/Blog/img/howto/how-to-fix-auto-unlock-after-watchOS-7/security_three.png" alt="security_three"/><p>Вот и все, галочка стоит и мои Mac'и теперь, можно разблокировать с помощью Apple Watch.<span class="wp-font-emots-emo-happy"></span></p>]]></content:encoded></item><item><guid isPermaLink="true">https://nazares.github.io/articles/simple-blog-by-swift-and-publish</guid><title>Простой блог на Swift c помощью Publish</title><description>В этой статье я расскажу о том, что такое Publish, как с его помощью создавать сайты, как размещать их на бесплатном хостинге от GitHub под названием GitHub Pages.</description><link>https://nazares.github.io/articles/simple-blog-by-swift-and-publish</link><pubDate>Sat, 24 Oct 2020 11:20:00 +0300</pubDate><content:encoded><![CDATA[<h1>Простой Блог на Swift c помощью Publish и размещение его на GitHub Pages</h1><p>В этой статье я расскажу о том, что такое Publish, как с его помощью создавать сайты, а так же, как размещать их на бесплатном хостинге от GitHub под названием GitHub Pages.</p><blockquote><p>Написать эту статью, меня подтолкнул разговор с одним из моих знакомых.</p></blockquote><h2>Prehistory instead of introduction | Предыстория вместо вступления</h2><p>Однажды, в дни осенней Covid'ной изоляции, когда заспорили мы в Telegram с одним моим знакомцем, синьором Front-End Developer'ом, о том, что Swift - так себе язык и на нем <span class="quote">"на Swift'е сайты не пишутъ".</span></p><p>Мне сразу вспомнилась фраза, из старого советского мультфильма про Левшу - Н. Лескова. Про ружьё и толченый кирпич: <span class="quote">- "Эх, англичане ружья кирпичом не чистют"</span>. Кстати, если интересно, мульт можно посмотреть <a href="https://youtu.be/nt_CR5eiW34 "Левша"">здесь</a>.</p><p>И вот, слоняясь по бескрайним просторам бесконечного Web'а, наткнулся я, на очень замечательную и интересную вещь под названием <a href="https://github.com/johnsundell/publish "Publish"">Publish</a>, написанную одним польским программистом, по имени <a href="https://twitter.com/johnsundell "John Sundell"">John Sundell</a> (Джон Санделл). О ней и пойдет мой дальнейший повествовательный рассказ. Кстати, как рассказывает сам Сандел (Publish is used to build all of <a href="https://swiftbysundell.com/">swiftbysundell.com</a>). Его блог полностью создан при помощи Publish. И тут меня осенило, а не написать ли мне свой сайт, да еще и на Swift, да чтоб товарищу показать, что бы не ... <censored>.</p><p><strong>И так, в данной статье мы рассмотрим:</strong></p><ul><li>Что такое Publish и как с ним работать?</li><li>Создание репозитория на GitHub для нашего сайта.</li><li>Как размещать сайты на GitHub Pages при помощи Publish</li></ul><h2>И так что же такое Publish ?</h2><p><a href="https://github.com/johnsundell/publish "Publish"">Publish</a> - это генератор статических сайтов написанный на Swift, который позволяет строить всевозможную логику при генерации сайта. Вы пишите странички при помощи облегченного языка разметки под названием <a href="https://ru.wikipedia.org/wiki/Markdown "Markdown"">Markdown</a> и Swift строит вам сайт с ... (with blackjack and ... <censored><span class="wp-font-emots-emo-saint"></span>) тегами, картой сайта, RSS и много чего еще на что нам только хватит фантазии. А это как раз то, что нам нужно.</p><h3>Установка Publish.</h3><p class="note warning">Для успешного использования Publish, убедитесь что в вашей системе установлен Swift версии 5.2 (или выше).
Если вы используете Mac, так-же убедитесь что xcode-select указывает на Xcode который включает в себя требуемую версию Swift, и что вы используете macOS Catalina (10.15) или новее.
<span class="break">
Обратите внимание, что Publish официально не поддерживает бета-версии программного обеспечения, включая бета-версии Xcode и macOS, или невыпущенные версии Swift.</span>
</p><p>Для начала в своей домашней директории, создадим временный каталог под названием <strong>~/tmp</strong>, например, вы можете создать любой. Это каталог, куда мы будем скачивать исходники Publish. После установки утилиты его можно удалить, он нам больше не понадобится. Далее клонируем исходники себе на диск и устанавливаем. Для этого в терминале – выполним следующие команды.</p><pre><code><div class="highlight"><span></span>$ mkdir tmp
$ <span class="nb">cd</span> tmp
$ git clone https://github.com/JohnSundell/Publish.git
$ <span class="nb">cd</span> Publish
$ make
</div></code></pre><p>После того, как все установится - проверяем, выполнив комманду:</p><pre><code><div class="highlight"><span></span>$ which publish
/usr/local/bin/publish
</div></code></pre><p>Все, Publish установлен и директория <strong>~/tmp</strong> нам больше не нужна, можно смело ее удалять, для этого выполним команду: <code>rm -rf ~/tmp</code> и снова перейдем в домашний каталог командой <code>cd ~</code> или просто <code>~</code>.</p><h2>Создание и генерация сайта.</h2><p>Создадим еще одну директорию, где мы будем размещать наш сайт, например: <strong>~/Projects/myBlog</strong> и перейдем в нее:</p><pre><code><div class="highlight"><span></span>$ mkdir -p ~/Projects/myBlog <span class="o">&&</span> <span class="nb">cd</span> <span class="s2">"</span><span class="nv">$_</span><span class="s2">"</span>
</div></code></pre><p>Теперь, если выполнить команду <code>publish --help</code> или просто <code>publish</code> без параметров, мы увидим список доступных нам параметров:</p><pre><code><div class="highlight"><span></span>$ publish --help
Publish Command Line Interface
------------------------------
Interact with the Publish static site generator from
the <span class="nb">command</span> line, to create new websites, or to generate
and deploy existing ones.
Available commands:
- new: Set up a new website in the current folder.
- generate: Generate the website in the current folder.
- run: Generate and run a localhost server on default port <span class="m">8000</span>
<span class="k">for</span> the website in the current folder. Use the <span class="s2">"-p"</span>
or <span class="s2">"--port"</span> option <span class="k">for</span> customizing the default port.
- deploy: Generate and deploy the website in the current
folder, according to its deployment method.
</div></code></pre><p>Находясь в директории <strong>~/Projects/myBlog</strong> выполним команду <code>publish new</code>, она создаст структуру нашего сайта. (<em>собственно исходники, из которых мы и будем в дальнейшем генерировать наш сайт</em>) .</p><pre><code><div class="highlight"><span></span>$ publish new
✅ Generated website project <span class="k">for</span> <span class="s1">'MyBlog'</span>
Run <span class="s1">'open Package.swift'</span> to open it and start building
</div></code></pre><p>Нам предлагается открыть наш проект и начать строить сайт, команда <code>open</code>, в macOS откроет нам файл <strong>Package.swift</strong> в Xcode (<em>если вы конечно не настроили другой редактор по умолчанию для файлов с расширением .swift</em>). Собственно Xcode и не обязателен. Вы можете например установить это все в Linux и открыть этот проект в любом своем любимом текстовом редакторе или IDE (с блэкджеком и ... <censored>), с поддержкой синтаксиса, пред просмотра Markdown и тд, и просто, после внесения изменений, каждый раз запускать команду <code>publish generate</code>. Это почти то же самое, если в Xcode нажать кнопку <strong>Выполнить (Run)</strong> на панели инструментов, или сочетание клавиш <keyboard><kbd>⌘</kbd> + <kbd>R</kbd></keyboard> (Command+R) <img src="" alt="toolbar"/></p><p>Давайте наконец сгенерируем наш сайт и запустим веб-сервер, выполнив для этого команду <code>publish run</code>, по умолчанию она использует <strong>8000</strong> порт - это можно исправить, если запустить ее с параметром <code>-p <номер_порта></code> или <code>--port <номер порта></code>, <strong>например:</strong> <code>publish run -p 80</code>.</p><pre><code><div class="highlight"><span></span>$ publish run
...
Publishing MyBlog <span class="o">(</span><span class="m">6</span> steps<span class="o">)</span>
<span class="o">[</span><span class="m">1</span>/6<span class="o">]</span> Copy <span class="s1">'Resources'</span> files
<span class="o">[</span><span class="m">2</span>/6<span class="o">]</span> Add Markdown files from <span class="s1">'Content'</span> folder
<span class="o">[</span><span class="m">3</span>/6<span class="o">]</span> Sort items
<span class="o">[</span><span class="m">4</span>/6<span class="o">]</span> Generate HTML
<span class="o">[</span><span class="m">5</span>/6<span class="o">]</span> Generate RSS feed
<span class="o">[</span><span class="m">6</span>/6<span class="o">]</span> Generate site map
✅ Successfully published MyBlog
🌍 Starting web server at http://localhost:8000
Press ENTER to stop the server and <span class="nb">exit</span>
</div></code></pre><p>И наконец, после некоторого ожидания, пока Publish подтянет все зависимости и соберет наш сайт, переходим по ссылке <a href="http://localhost:8000">http://localhost:8000</a> и Look at that! Look at that!:</p><img src="" alt="browser"/><p>НИЧОСИ! <span class="wp-font-emots-emo-surprised"></span> Hooray! У нас теперь есть свой сайт. Просто, не правда ли?</p><p>Давайте теперь создадим репозиторий для нашего сайта, что-бы сохранять изменения которые мы будем вносить в дальнейшем и в случае чего, мы могли также откатить эти изменения.</p><h2>Создание репозитария для GitHub Pages</h2><p class="note tip">Если вы не знакомы с <strong class="fab fa-git-alt">git</strong>, и не знаете как его настраивать, перед выполнением следующего шага рекомендуется почитать: <a href="https://git-scm.com/book/ru/v2">Git Book</a></p><p class="note warning">Внимание! Название репозитория должно быть в формате <strong>{login}.github.io.</strong></p><p>Перейдем по ссылке <a href="https://github.com/new">https://github.com/new</a></p><img src="" alt="github-new"/><br/><img src="" alt="github-set"/><p>Готово! Tеперь настроим локальный репозиторий и свяжем его c GitHub. Для этого, в терминале, находясь в папке нашего сайта <strong>~/Projects/myBlog</strong> выполним команды как на картинке выше:</p><pre><code><div class="highlight"><span></span>$ git init
</div></code></pre><p>Так, мы создали локальный репозиторий, теперь давайте исключим папку <strong>Output</strong>, нет смысла ее индексировать т.к. ее содержимое, мы будем 'деплоить' на {login}.github.io, Добавим <strong>/Output</strong> в .gitignore</p><pre><code><div class="highlight"><span></span>$ git add .
$ git commit -m <span class="s2">"First commit of our Blog"</span>
$ git branch -M main
$ git remote add origin https://github.com/<span class="o">{</span>login<span class="o">}</span>/<span class="o">{</span>login<span class="o">}</span>.github.io.git
$ git push -u origin main
</div></code></pre><p>С git разобрались, переходим к настройкам.</p><h2>Настройки</h2><p>Откроем еще одну вкладку в терминале нажав сочетание клавиш <keyboard><kbd>⌘</kbd> + <kbd>T</kbd></keyboard> и введем команду:</p><pre><code><div class="highlight"><span></span>$ open Package.swift
</div></code></pre><p>Откроем проект и рассмотрим структуру каталогов которую нам создал Publish</p><img src="" alt="filetree"/><p>Структура нашего проекта состоит из :</p><ul><li><strong>Content</strong> (исходники страниц сайта в формате markdown)</li><li><strong>Output</strong> (сгенерированные ресурсы - HTML, стили и тд.)</li><li><strong>Resources</strong> (стили, картинки, медиа)</li><li><strong>Sources</strong> (исходники шаблоны на Swift)</li></ul><p>Если потом еще посмотреть в терминале командой <code>ls -a</code> , то будет видно, что там есть и скрытые папки со всякими зависимостями, кешами и тд, в дальнейшем, нам еще пригодится каталог <strong>.build</strong>, а пока ...</p><p>Файл <strong>Package.swift</strong> - это менеджер пакетов Swift, сюда мы будем добавлять всякие пакеты, прописывать зависимости и Xcode будет автоматически их подгружать, или вручную в терминале командой <code>publish generate</code></p><pre><code><div class="highlight"><span></span><span class="c1">// swift-tools-version:5.2</span>
<span class="kd">import</span> <span class="nc">PackageDescription</span>
<span class="kd">let</span> <span class="nv">package</span> <span class="p">=</span> <span class="n">Package</span><span class="p">(</span>
<span class="n">name</span><span class="p">:</span> <span class="s">"MyBlog"</span><span class="p">,</span>
<span class="n">products</span><span class="p">:</span> <span class="p">[</span>
<span class="p">.</span><span class="n">executable</span><span class="p">(</span>
<span class="n">name</span><span class="p">:</span> <span class="s">"MyBlog"</span><span class="p">,</span>
<span class="n">targets</span><span class="p">:</span> <span class="p">[</span><span class="s">"MyBlog"</span><span class="p">]</span>
<span class="p">)</span>
<span class="p">],</span>
<span class="n">dependencies</span><span class="p">:</span> <span class="p">[</span>
<span class="p">.</span><span class="n">package</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="s">"Publish"</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="s">"https://github.com/johnsundell/publish.git"</span><span class="p">,</span> <span class="n">from</span><span class="p">:</span> <span class="s">"0.6.0"</span><span class="p">)</span>
<span class="p">],</span>
<span class="n">targets</span><span class="p">:</span> <span class="p">[</span>
<span class="p">.</span><span class="n">target</span><span class="p">(</span>
<span class="n">name</span><span class="p">:</span> <span class="s">"MyBlog"</span><span class="p">,</span>
<span class="n">dependencies</span><span class="p">:</span> <span class="p">[</span><span class="s">"Publish"</span><span class="p">]</span>
<span class="p">)</span>
<span class="p">]</span>
<span class="p">)</span>
</div></code></pre><p>Файл <strong>main.swift</strong> - это настройки нашего сайта, там настраиваются всякие, описания, метаданные, подключаются всевозможные плагины, темы.</p><pre><code><div class="highlight"><span></span><span class="kd">import</span> <span class="nc">Foundation</span>
<span class="kd">import</span> <span class="nc">Publish</span>
<span class="kd">import</span> <span class="nc">Plot</span>
<span class="c1">// This type acts as the configuration for your website.</span>
<span class="kd">struct</span> <span class="nc">MyBlog</span><span class="p">:</span> <span class="n">Website</span> <span class="p">{</span>
<span class="kd">enum</span> <span class="nc">SectionID</span><span class="p">:</span> <span class="nb">String</span><span class="p">,</span> <span class="n">WebsiteSectionID</span> <span class="p">{</span>
<span class="c1">// Add the sections that you want your website to contain here:</span>
<span class="k">case</span> <span class="n">posts</span>
<span class="p">}</span>
<span class="kd">struct</span> <span class="nc">ItemMetadata</span><span class="p">:</span> <span class="n">WebsiteItemMetadata</span> <span class="p">{</span>
<span class="c1">// Add any site-specific metadata that you want to use here.</span>
<span class="p">}</span>
<span class="c1">// Update these properties to configure your website:</span>
<span class="kd">var</span> <span class="nv">url</span> <span class="p">=</span> <span class="n">URL</span><span class="p">(</span><span class="n">string</span><span class="p">:</span> <span class="s">"https://your-website-url.com"</span><span class="p">)</span><span class="o">!</span>
<span class="kd">var</span> <span class="nv">name</span> <span class="p">=</span> <span class="s">"MyBlog"</span>
<span class="kd">var</span> <span class="nv">description</span> <span class="p">=</span> <span class="s">"A description of MyBlog"</span>
<span class="kd">var</span> <span class="nv">language</span><span class="p">:</span> <span class="n">Language</span> <span class="p">{</span> <span class="p">.</span><span class="n">english</span> <span class="p">}</span>
<span class="kd">var</span> <span class="nv">imagePath</span><span class="p">:</span> <span class="n">Path</span><span class="p">?</span> <span class="p">{</span> <span class="kc">nil</span> <span class="p">}</span>
<span class="p">}</span>
<span class="c1">// This will generate your website using the built-in Foundation theme:</span>
<span class="k">try</span> <span class="n">MyBlog</span><span class="p">().</span><span class="n">publish</span><span class="p">(</span><span class="n">withTheme</span><span class="p">:</span> <span class="p">.</span><span class="n">foundation</span><span class="p">)</span>
</div></code></pre><p>В общем сайт мы создали, хоть и очень простой <span class="wp-font-emots-emo-unhappy"></span>. Но ведь мы собственно еще пока ни единой строчки кода не написали, занимались установкой тысызыть.</p><h3>Deploy</h3><sup class="deploy">Deploy (от англ. deployment) - разворачивание, в данном случае – установка нашего локального сайта на удаленный сервер GitHub.</sup><p>Пока что <strong>Publish</strong> ничего не знает о нашем репозитории, давайте его Publish загружать сгенерированные странички в созданный на GitHub репозиторий, для этого в нашем генераторе Publish существует DeploymentMethod.</p><p>В файле <strong>Sources/main.swift</strong> заменим строку:</p><pre><code><div class="highlight"><span></span><span class="c1">// This will generate your website using the built-in Foundation theme:</span>
<span class="k">try</span> <span class="n">MyBlog</span><span class="p">().</span><span class="n">publish</span><span class="p">(</span><span class="n">withTheme</span><span class="p">:</span> <span class="p">.</span><span class="n">foundation</span><span class="p">)</span>
</div></code></pre><p>на</p><pre><code><div class="highlight"><span></span><span class="c1">// This will generate your website using the built-in Foundation theme:</span>
<span class="k">try</span> <span class="n">MyBlog</span><span class="p">().</span><span class="n">publish</span><span class="p">(</span>
<span class="n">withTheme</span><span class="p">:</span> <span class="p">.</span><span class="n">foundation</span><span class="p">,</span>
<span class="n">deployedUsing</span><span class="p">:</span> <span class="p">.</span><span class="n">gitHub</span><span class="p">(</span><span class="s">"{login}/{login}.github.io"</span><span class="p">,</span> <span class="n">useSSH</span><span class="p">:</span> <span class="kc">false</span><span class="p">)</span>
<span class="p">)</span>
</div></code></pre><p>и в терминале выполним команду:</p><pre><code><div class="highlight"><span></span>$ publish deploy
</div></code></pre><p>После этого возвращаемся на <a href="https://github.com">github.com</a> и в настройках нашего репозитория находим пункт GitHub Pages, где в качестве ресурса выбираем ветку <strong>master</strong> и нажимаем кнопку сохранить.</p><img src="" alt="git-pages"/><p>Через некоторое время наш сайт будет доступен по адресу <strong><span style="font-family:monospace;">https://{login}.github.io</span></strong></p><h3>Кастомизация</h3><sup class="custom">Кастомизация (от англ. to customize — настраивать, изменять)</sup><p>Давайте немного изменим наш сайт, добавим разделы, страницы, настроим тему, сделаем подсветку синтаксиса, мы же программисты, нам без подсветки никуда.</p><p>Итак, добавим раздел о себе, создав файл <strong>about.md</strong> в папке <strong>Content</strong> и добавим туда немного информации о себе, так же в директорию <strong>Resources/myBlog</strong> добавим файл с картинкой (с нашей аватаркой).</p><img src="" alt="xcode"/><p>Но, Publish опять-таки (<em>по умолчанию</em>), ничего не знает об этом, он, конечно сгенерирует файл <strong>Output/about/index.html</strong> по имени markdown файла и страница будет доступна по адресу http://localhost:8000/about. Но это – не совсем то, что нам нужно, нам же еще нужна ссылка на нее (пункт меню). Давайте расскажем Publish об этом, добавив <code>case about</code> в файл <strong>main.swift</strong></p><pre><code><div class="highlight"><span></span><span class="kd">enum</span> <span class="nc">SectionID</span><span class="p">:</span> <span class="nb">String</span><span class="p">,</span> <span class="n">WebsiteSectionID</span> <span class="p">{</span>
<span class="c1">// Add the sections that you want your website to contain here:</span>
<span class="k">case</span> <span class="n">posts</span>
<span class="k">case</span> <span class="n">about</span>
<span class="p">}</span>
</div></code></pre><p>Снова генерируем сайт и...</p><img src="" alt="about-us"/><p>Oh my God! We have done it! Божечки, мы сделали это!</p><p>Теперь создадим Theme (тему) для нашего блога на основе стандартной темы Foundation</p><h4>Создание темы</h4><p>Помните я говорил про скрытый каталог .build в корне каталога нашего сайта? Ну что, настало его время. В терминале находясь в каталоге <strong>~/Projects/myBlog</strong> выполним команды:</p><pre><code><div class="highlight"><span></span>$ cp .build/checkouts/publish/Sources/Publish/API/Theme+Foundation.swift Sources/MyBlog/Theme+myBlog.swift
$ cp .build/checkouts/publish/Resources/FoundationTheme/styles.css Resources/MyBlog/styles.css
</div></code></pre><p>Тем самым скопировав тему и стили поmумолчанию для нашего сайта, которые в дальнейшем мы и будем изменять:</p><p>Заставим Publish использовать их вместо стандартных, изменив в файле <strong>Sources/MyBlog/Theme+myBlog.swift</strong> строки:</p><pre><code><div class="highlight"><span></span><span class="kd">import</span> <span class="nc">Plot</span>
<span class="kd">public</span> <span class="kd">extension</span> <span class="nc">Theme</span> <span class="p">{</span>
<span class="c1">/// The default "Foundation" theme that Publish ships with, a very</span>
<span class="c1">/// basic theme mostly implemented for demonstration purposes.</span>
<span class="kd">static</span> <span class="kd">var</span> <span class="nv">foundation</span><span class="p">:</span> <span class="kc">Self</span> <span class="p">{</span>
<span class="n">Theme</span><span class="p">(</span>
<span class="n">htmlFactory</span><span class="p">:</span> <span class="n">FoundationHTMLFactory</span><span class="p">(),</span>
<span class="n">resourcePaths</span><span class="p">:</span> <span class="p">[</span><span class="s">"Resources/FoundationTheme/styles.css"</span><span class="p">]</span>
<span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
</div></code></pre><p>на</p><pre><code><div class="highlight"><span></span><span class="kd">import</span> <span class="nc">Plot</span>
<span class="kd">import</span> <span class="nc">Publish</span>
<span class="kd">public</span> <span class="kd">extension</span> <span class="nc">Theme</span> <span class="p">{</span>
<span class="c1">/// The default "Foundation" theme that Publish ships with, a very</span>
<span class="c1">/// basic theme mostly implemented for demonstration purposes.</span>
<span class="kd">static</span> <span class="kd">var</span> <span class="nv">myblog</span><span class="p">:</span> <span class="kc">Self</span> <span class="p">{</span>
<span class="n">Theme</span><span class="p">(</span>
<span class="n">htmlFactory</span><span class="p">:</span> <span class="n">MyBlogHTMLFactory</span><span class="p">(),</span>
<span class="n">resourcePaths</span><span class="p">:</span> <span class="p">[</span><span class="s">"Resources/MyBlog/styles.css"</span><span class="p">]</span>
<span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
</div></code></pre><p>и еще строку:</p><pre><code><div class="highlight"><span></span><span class="kd">private</span> <span class="kd">struct</span> <span class="nc">FoundationHTMLFactory</span><span class="p"><</span><span class="n">Site</span><span class="p">:</span> <span class="n">Website</span><span class="p">>:</span> <span class="n">HTMLFactory</span> <span class="p">{</span>
</div></code></pre><p>заменим на:</p><pre><code><div class="highlight"><span></span><span class="kd">private</span> <span class="kd">struct</span> <span class="nc">MyBlogHTMLFactory</span><span class="p"><</span><span class="n">Site</span><span class="p">:</span> <span class="n">Website</span><span class="p">>:</span> <span class="n">HTMLFactory</span>
</div></code></pre><p>А так же в файле <strong>main.swift</strong> изменим строку:</p><pre><code><div class="highlight"><span></span><span class="k">try</span> <span class="n">MyBlog</span><span class="p">().</span><span class="n">publish</span><span class="p">(</span><span class="n">withTheme</span><span class="p">:</span> <span class="p">.</span><span class="n">foundation</span><span class="p">,</span>
</div></code></pre><p>на строку:</p><pre><code><div class="highlight"><span></span><span class="k">try</span> <span class="n">MyBlog</span><span class="p">().</span><span class="n">publish</span><span class="p">(</span><span class="n">withTheme</span><span class="p">:</span> <span class="p">.</span><span class="n">myblog</span><span class="p">,</span>
</div></code></pre><h4>Добавление плагина подсветки синтаксиса:</h4><p>Давайте теперь добавим подсветку синтаксиса для нашего блога, я выбрал <a href="https://github.com/Ze0nC/SwiftPygmentsPublishPlugin">Pygments</a>, этот плагин поддерживает подсветку, около 500 языков. Я думаю для большинства задач – этого будет более чем достаточно.</p><p>Теперь в файл <strong>Package.swift</strong> добавим наш пакет</p><pre><code><div class="highlight"><span></span> <span class="n">dependencies</span><span class="p">:</span> <span class="p">[</span>
<span class="p">.</span><span class="n">package</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="s">"Publish"</span><span class="p">,</span> <span class="n">url</span><span class="p">:</span> <span class="s">"https://github.com/johnsundell/publish.git"</span><span class="p">,</span> <span class="n">from</span><span class="p">:</span> <span class="s">"0.6.0"</span><span class="p">),</span>
<span class="p">.</span><span class="n">package</span><span class="p">(</span><span class="n">url</span><span class="p">:</span> <span class="s">"https://github.com/Ze0nC/SwiftPygmentsPublishPlugin"</span><span class="p">,</span> <span class="p">.</span><span class="n">branch</span><span class="p">(</span><span class="s">"master"</span><span class="p">))</span>
</div></code></pre><p>а так же зависимость <strong>SwiftPygmentsPublishPlugin</strong></p><pre><code><div class="highlight"><span></span> <span class="p">.</span><span class="n">target</span><span class="p">(</span>
<span class="n">name</span><span class="p">:</span> <span class="s">"MyBlog"</span><span class="p">,</span>
<span class="n">dependencies</span><span class="p">:</span> <span class="p">[</span><span class="s">"Publish"</span><span class="p">,</span> <span class="s">"SwiftPygmentsPublishPlugin"</span><span class="p">]</span>
</div></code></pre><p>в файле <strong>main.swift</strong> пропишем <code>import SwiftPygmentsPublishPlugin</code> и <code>plugins: [.pygments()]</code></p><pre><code><div class="highlight"><span></span><span class="kd">import</span> <span class="nc">SwiftPygmentsPublishPlugin</span>
<span class="k">try</span> <span class="n">Blog</span><span class="p">().</span><span class="n">publish</span><span class="p">(</span>
<span class="n">withTheme</span><span class="p">:</span> <span class="p">.</span><span class="n">blog</span><span class="p">,</span>
<span class="n">deployedUsing</span><span class="p">:</span> <span class="p">.</span><span class="n">gitHub</span><span class="p">(</span><span class="s">"nazares/nazares.github.io"</span><span class="p">,</span> <span class="n">useSSH</span><span class="p">:</span> <span class="kc">false</span><span class="p">),</span>
<span class="n">plugins</span><span class="p">:</span> <span class="p">[.</span><span class="n">pygments</span><span class="p">()]</span>
<span class="p">)</span>
</div></code></pre><p>Так же нужно в файле <strong>Theme+Blog.swift</strong> в <strong>head</strong> каждой страницы после свойства <code>on:context.site</code> дописать путь к нашим стилям <code>stylesheetPaths:["/style.css"]</code>, вот так:</p><pre><code><div class="highlight"><span></span><span class="p">.</span><span class="n">head</span><span class="p">(</span><span class="k">for</span><span class="p">:</span> <span class="n">index</span><span class="p">,</span> <span class="n">on</span><span class="p">:</span> <span class="n">context</span><span class="p">.</span><span class="n">site</span><span class="p">,</span> <span class="n">stylesheetPaths</span><span class="p">:</span> <span class="p">[</span><span class="s">"/styles.css"</span><span class="p">])</span>
<span class="p">.</span><span class="n">head</span><span class="p">(</span><span class="k">for</span><span class="p">:</span> <span class="n">section</span><span class="p">,</span> <span class="n">on</span><span class="p">:</span> <span class="n">context</span><span class="p">.</span><span class="n">site</span><span class="p">,</span> <span class="n">stylesheetPaths</span><span class="p">:</span> <span class="p">[</span><span class="s">"/styles.css"</span><span class="p">])</span>
<span class="p">.</span><span class="n">head</span><span class="p">(</span><span class="k">for</span><span class="p">:</span> <span class="n">item</span><span class="p">,</span> <span class="n">on</span><span class="p">:</span> <span class="n">context</span><span class="p">.</span><span class="n">site</span><span class="p">,</span> <span class="n">stylesheetPaths</span><span class="p">:</span> <span class="p">[</span><span class="s">"/styles.css"</span><span class="p">])</span>
<span class="p">.</span><span class="n">head</span><span class="p">(</span><span class="k">for</span><span class="p">:</span> <span class="n">page</span><span class="p">,</span> <span class="n">on</span><span class="p">:</span> <span class="n">context</span><span class="p">.</span><span class="n">site</span><span class="p">,</span> <span class="n">stylesheetPaths</span><span class="p">:</span> <span class="p">[</span><span class="s">"/styles.css"</span><span class="p">])</span>
</div></code></pre><p>После этого, нужно в файл style.css добавить стили для подсветки, например: <a href="https://gist.github.com/nazares/bd4740170de2945758e4537c023477f4">pygments-native.css</a></p><p>Еще больше тем для <strong>Pygments</strong> можно найти <a href="https://stylishthemes.github.io/Syntax-Themes/pygments/">здесь</a>.</p><p>В последний раз соберем наш проект, убедимся, что все работает так как нужно, после чего выполним:</p><pre><code><div class="highlight"><span></span>$ git commit -m <span class="s2">"Blog release v0.1"</span>
$ git push -u origin main
$ publish deploy
</div></code></pre><p>И насладимся трудами нашего творчества! <img src="" alt="release"/></p><p>Cпасибо за внимание, позитива и добра!</p><h4>UPD: Добавлено видео</h4><iframe width="560" height="315" src="https://www.youtube.com/embed/9x0Gb6J-0CE" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><iframe width="560" height="315" src="https://www.youtube.com/embed/38BMvdeckSw" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>]]></content:encoded></item><item><guid isPermaLink="true">https://nazares.github.io/articles/introduction-en</guid><title>New Blog</title><description>Hello! Now I have a Blog and this is my first note. I will write here different articles about computer programming languages and tech.</description><link>https://nazares.github.io/articles/introduction-en</link><pubDate>Sun, 18 Oct 2020 03:02:00 +0300</pubDate><content:encoded><![CDATA[<h1>My New Blog</h1><p>Hello, Now I have a new blog, and this is my first post. I've never done it before but I'm going to write different articles about computer programming languages and tech. So, Why do I need it? First of all it can help me to improve my communication skills and and let me not to forget about work I've already done. In third it may help some others to expand their knowledge and to find out something new. Sometimes I'll write in different languages, sometimes I'll use <span class="highlighted red">Russian</span>, sometimes <span class="highlighted blue">English</span>, so it will also help me to improve my English, because English is the second main language for programmers and as I've seen at the Internet a someone said "<span class="quote">A programmer without understanding English like a Surgeon Doctor without a scalpel - He can still do the surgery but not so perfect</span>". And I totally agree with that saying. There's no limit to perfection! <strong>PS:</strong> So wish me luck with that hard but very interesting way of writing, but I wish you Good Reading! Thanks for your attention.</p>]]></content:encoded></item><item><guid isPermaLink="true">https://nazares.github.io/articles/introduction-ru</guid><title>Новый Блог</title><description>Привет! Теперь у меня есть Блог! И это мой первый пост. Здесь я буду писать разные статьи о языках программирования и технологиях.</description><link>https://nazares.github.io/articles/introduction-ru</link><pubDate>Sun, 18 Oct 2020 03:02:00 +0300</pubDate><content:encoded><![CDATA[<h1>Мой новый блог</h1><p>Привет! Теперь у меня есть свой блог! И это мой первый пост, я собираюсь здесь писать разные статьи о языках программирования и технологиях. Зачем мне это нужно?, Ну во-первых, это поможет мне развить и улучшить комуникативные (повествовательные) навыки, не забыть то, что уже наработано и в третих это возможно кому-то может быть полезным, поможет найти ответы или будет интересно узнать что-то новое. Иногда я буду писать как на <span class="highlighted red">русском</span> так и на <span class="highlighted blue">английском</span> языках - это так же является очень хорошей практикой в развитии навыков, ведь для разработчика (программиста), английский - это второй родной язык. Улышал как-то в интернете фразу: <span class="quote">"Программист без английского - это все равно, что хирург без скальпеля, операцию конечно провести сможет, но крайне не качественно!"</span>. В целом я ее целиком и полностью поддерживаю! Совершенству предела нет! Так что, давайте развиваться и стремиться постичь <strong>禅, дзен</strong>. Как говорят <strong>французы</strong> : "- Just do it!" (шутка). Не французы... <span class="wp-font-emots-emo-happy"></span></p><p>PS: В общем пожелайте мне удачи в этом не легком но увлекательном деле, а вам желаю приятного чтения!</p>]]></content:encoded></item></channel></rss>