Рубрика: Технологии

  • Любой каприз на WordPress

    Любой каприз на WordPress

    Очередной проект переезжает на WordPress. Некоторые особенности этого бизнеса не могут быть воспроизведены стандартной комплектацией WordPress.

    Но любой мой запрос получает ответ в виде нужного плагина. Я уже, честно говоря, отчаялся искать проблему, которую нельзя было бы решить недолгим просмотром каталога дополнений.

    Хочу вывести внутри поста другие посты по тегу в любом месте? Легко — Display Posts Shortcode.

    Некрасивые превьюшки получились, никак не совладаю с обрезкой фотографий — Crop Thumbnails.

    Ну вот, теперь надо переделать старые превьюшки — Regenerate Thumbnails.

    Случайно создал страницу вместо записи, да не одну. И тут приходит Post Type Switcher.

    Решил отобразить цены на услуги в виде красивой таблицы — Responsive Pricing Table.

    И с каждой такой находкой у меня все больше вопросов — кто и зачем может советовать использовать что-то кроме WordPress? Какие-то проблемы с безопасностью? Нужно чаще обновляться, у кого их нет. Проблемы со скоростью? Плагин W3 Total Cache решает и эту проблему.

    Хотите сделать сайт — берите WordPress.

  • WWDC. Дополненная реальность по версии Apple

    WWDC. Дополненная реальность по версии Apple

    Каждую презентацию Apple я думаю: ну что ещё можно придумать. И каждый раз они что-то показывают красивое. Новое. 


    Сегодня меня поразила дополненная реальность и очки виртуальной реальности. 


    Нужно понимать, что будущее за VR. Там мы будем зарабатывать через 10 лет, а может и раньше. 

    Они делают рендер в реальном времени на столе!

  • Первая программа на Go lang

    Первая программа на Go lang

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

    А после подсчета в лоб, используя фиксированное количество итераций, нужно было оптимизировать приложение так, чтобы использовалось только нужно количество попыток с определенным допуском.

    Красивая задачка, чтобы разобраться с синтаксисом и наступить на пару классических грабель Go.

    Вот какой красивый код получился:

    package main
    
    import (
    	"fmt"
    )
    
    func Sqrt(x float64) float64 {
    	z := 1.0
    	check := 0.0
    	for i:=0; i <= 100; i++	{
    		z = z - (z*z - x)/(2*z)
    		fmt.Println("Попытка", i, "Квадратный корень =", z)
    		if i != 0 {
    			if check - z < 0.00000001 {
    			fmt.Println("Это значение довольно точное!")
    				break
    			}
    		}
    		check = z
    	}
    	return z
    }
    
    func main() {
    	fmt.Println("Квадратный корень по Ньютону:", Sqrt(5645))
    }
    

    А вот результат выполнения:

    Попытка 0 Квадратный корень = 2823
    Попытка 1 Квадратный корень = 1412.4998228834572
    Попытка 2 Квадратный корень = 708.2481417807868
    Попытка 3 Квадратный корень = 358.1092560726704
    Попытка 4 Квадратный корень = 186.9363008837615
    Попытка 5 Квадратный корень = 108.56687651411139
    Попытка 6 Квадратный корень = 80.28123878909122
    Попытка 7 Квадратный корень = 75.29827319476982
    Попытка 8 Квадратный корень = 75.13339593357443
    Попытка 9 Квадратный корень = 75.13321502526514
    Попытка 10 Квадратный корень = 75.13321502504735
    Это значение довольно точное!
    Квадратный корень по Ньютону: 75.13321502504735

    Серьезный шаг вперед, первая программа написана и работает.

    А что особенно мне нравится в Go, так это его поддержка кириллицы. Никаких тебе кракозябр в выводе. Все языки должны быть такими.

  • Изучаем язык Go, чтобы писать ботов для Telegram

    Изучаем язык Go, чтобы писать ботов для Telegram

    Моим хобби является программирование. Чисто для себя и чтобы потренировать мозг. Последним новым перспективным языком является Go lang. Я давно искал возможности применить его в какой-нибудь практической задаче, и, наконец, придумал. У нашей семьи есть групповой чат в Telegram, где мы учитываем общие расходы. И идея такая — бот будет собирать все цифры в этом чате, суммировать и в конце месяца выдавать итог. Удобно и можно потренироваться. 

    Сегодня посвятил день синтаксису Go, прохожу обучение в интерактивном режиме на официальном сайте:

    https://tour.golang.org/welcome/1

    Весьма просто и похоже на тот же Питон, но есть свои особенности. Надеюсь, долго обучаться не придётся, уже хочется что-нибудь написать. 

  • Обсессивно-компульсивное IT-расследование

    Обсессивно-компульсивное IT-расследование

    Как часто к вам обращались с вопросом «Я тут что-то нажала и все пропало»?

    Или как часто вы обращаетесь с таким вопросом к знакомому «программисту»?

    Безусловно, «программистов» эти запросы очень напрягают, ведь достаточно было всего лишь прочитать, что написано было в этом окне, где вы без раздумий нажали Ок. Иногда такие расследования затягиваются, когда окон было несколько, а проблема оказывается настолько простой, что очень жаль потраченное время.

    Но бывает и иначе. Редко со стороны, обычно с такой экзотикой сталкиваешься сам в процессе какого-то компьютерного умозаключения. И когда ты на 100% уверен, что это должно работать, а оно не работает, вот тогда включается обсессивно-компульсивное IT-расследование.

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

    Так часто бывает с программами, где дебаггинг и отладка — сопутствующие процессы. Сегодня я потратил два часа, выясняя, почему одни переменные не передавались в другие переменные, а те в свою очередь не отправлялись по определенному адресу. Вот все в этом процессе было налажено верно, но не работало. Когда я догадался, что к чему, вот это была та самая эврика. Смешанная с чувством «как же я сразу на это не подумал».

    К сожалению, понятия не имею как с этим бороться, это просто факт. Чем больше вокруг неразгаданного, тем меньше времени на сон.

    За фото спасибо неизвестному автору.

  • Следим за технологиями вместе с Радио-Т

    Следим за технологиями вместе с Радио-Т

    Бывает, я рассказываю вам о каких-то очень специфичных штуках, например о Docker или GitLab. Это тренды web-разработки, и знакомлюсь я с ними в подкасте Радио-Т. Я подписан на него уже много лет, и каждую субботу Умпутун, Бобук, Грей и Оляпка/Маринка/Ксюша общаются о сложных вещах простым языком. Я выхватываю оттуда множество идей для саморазвития, новые термины и технологии. Слушаю я его всегда один и только в машине, поэтому их двухчасового формата как раз хватает на всю неделю. Одной идеей для будущего саморазвития я хочу взять и изучить язык Go. Если ваша работа хоть как-то связана с технологиями, не откажите себе — скачайте Радио-Т. 

  • Программы для удаленной техподдержки

    Программы для удаленной техподдержки

    Ко мне довольно часто обращаются родственники с просьбой помочь в настройке компьютера. Раньше мне приходилось к ним ездить, а теперь у меня есть целых две программы, которые могут помочь в этом. Удобная и условно-бесплатная для некоммерческого пользования программа TeamViewer. Хороша и удобна всем, кроме политики ценообразования. Кажется ее они взяли у корпорации Adobe, которая когда-то продавала Photoshop за нереальные деньги. Я очень надеюсь, что TeamViewer одумаются и сделают подписку для микроорганизаций на какие-нибудь 299 рублей в месяц — тогда это нужно будет обязательно купить, программа очень удобная.

    Говорят, что если ей очень часто пользоваться, то она ломается и говорит, что вы, в общем, коммерческий пользователь, и вам пора платить много-много денег. Тогда на помощь приходит еще одна программа — AnyDesk. Также невероятно удобная, но в некоммерческой версии нельзя сохранять контакты, каждый раз придется заново вводить. Полноценная платная версия стоит уже 1000 рублей в месяц, для большой фирмы вполне себе позволительно. Хотя совсем не обязательно, так как бесплатная версия также работает на ура.

  • Современная разработка интернет-приложений: Docker!

    Современная разработка интернет-приложений: Docker!

    После того, как я получил в свое распоряжение Git, мне захотелось улучшить мое взаимодействие с самим процессом разработки и разворачивания моих проектов на новых системах. Конечно, все это можно отдать на откуп системных администраторов и разработчиков, но знать технологию всегда приятно.

    Итак, Docker. Что это такое и зачем это нужно? Чтобы ваше приложение заработало на вашем локальном сервере, вы устанавливаете огромное количество разных приложений, например, интерпретаторы языков программирования, системы управления базами данных, системы, запускающие скрипты по расписанию и многое другое. В процессе разработки сюда добавляется еще десяток другой разных команд и вот, в конце концов, вы получаете работающий сайт. Покупаете хостинг, заливаете файлы на сервер и… Ничего не работает. Вы забыли что-то поставить из приложений, и не можете вспомнить что именно. Или, что еще печальнее, вы установили на боевой сервер нужное приложение, но более новой версии (меня поймут разработчики на языке PHP, мажорные версии которого просто убирают некоторые критически важные старые функции).

    Выход? Docker. По сути это система управления виртуальными машинами. Вы создаете свой собственный сервер в файле-образе (это как создать образ диска), в нем прописываете все что вам нужно и заливаете в облако на сайте Docker. Все, теперь этот образ можно скачать откуда угодно на любой сервер, где установлен Docker. Пара минут, и ваше приложение заработает в полную силу, даже если вы писали его под Linux, а запустили через на Mac внутри Parallel Desktop, где крутится Windows. Правда замечательная возможность?

    С чего начать изучение? Как ни странно, не с видео, как я обычно рекомендую. У Docker невероятно информативная документация, где буквально за один день (как это получилось со мной) вы научитесь всем базовым концепциям. Вот что у меня получилось за пару часов ненапряжного чтения:

    Да, это кит, который говорит то, что я ему прикажу. И вы можете сделать то же самое. И не спрашивайте зачем, это просто процесс обучения в стиле «и научим, и повеселим». На ките, кстати, лежат контейнеры. Так называются ваши образы, которые запущены.

    Если вы хотите быть ближе к разработке и понимать, как правильно разворачивать проекты (это вам не просто получить доступ к FTP и mySQL теперь, хотя так тоже можно), обязательно изучите тему.

  • Второй день с системами контроля версий: инициализация Git-репозитория

    Второй день с системами контроля версий: инициализация Git-репозитория

    Как выяснилось, управление системой контроля версий очень простое. Чтобы получить необходимый минимум удобства для себя как единственного разработчика на проекте, нужно проделать совсем немного шагов. Это продолжение вчерашнего поста.

    Напоминаю, наша задача: после каждой правки делать «коммит» и иметь возможность вернутся к любому коммиту в прошлом. Ну и, конечно, иметь наглядную историю доработок на проекте.

    На этом этапе мы будем считать, что вы уже подключились к серверу с помощью SSH и смотрите в окно терминала. Первым делом перейдите в папку с проектом, используя команду cd (сменить директорию). Как только вы добрались до нужного пути, выполняем:

    Шаг 0. Нужно рассказать Git кто мы такие. Выполняем следующие команды:

    git config --global user.name "Name Surname"
    git config --global user.email "example@gmail.com"

    Теперь при коммите будет отображаться наше имя.

    Шаг 1. Инициализируем репозиторий.

    git init

    Шаг 2. Рассказываем Git, что у нас есть репозиторий на GitLab (там, конечно, нужно зарегистрироваться и создать репозиторий. Это просто, подробного описания делать не буду). Это как раз то самое удобное место, откуда мы будем брать всю интересную нам информацию. Конечно, можно брать ее из командной строки, а можно немного упростить себе жизнь. Необходимая команда будет выдана самим GitLab после создания пустого проекта:

    git remote add origin git@gitlab.com:account/project_name

    Шаг 3. Самый важный шаг для существующих проектов, особенно интернет-магазинов. Нам нужно выбрать файлы и директории, которые мы будем игнорировать. Вы же не хотите следить за изменениями внутри jpg-изображений ваших товаров?

    Игнорируемые файлы настраиваются в папке .git/info/exclude

    Обратите внимание, что папки, которые начинаются с точки, по умолчанию скрыты. Поэтому установите флажок «Показывать скрытые и системные файлы» в вашем SFTP-клиенте (я пользуюсь Transmit). Чтобы игнорировать картинки, просто укажите в этом файле с новой строки «*.jpg». Также рекомендую игнорировать архивы, логи, pdf и все остальное, что не имеет дела к программированию.

    Шаг 4. Добавляем в проект все файлы, кроме игнорируемых:

    git add .

    Точка здесь означает «все файлы». Если у вас большая современная CMS, это займет некоторое время. Но не очень большое, если ожидание затянулось, можно прервать операцию командой CTRL+C и еще раз проверить, все ли файлы вы игнорируете на шаге 3.

    Шаг 5. Делаем первый коммит:

    git commit

    Нас попросят ввести комментарий к коммиту, а затем дело сделано. Теперь нужно только передать всю нашу работу в GitLab:

    git push -u origin master

    Собственно, на этом все. Заходим на GitLab и видим, что файлы проекта успешно загрузились:

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

  • Зачем нужны системы контроля версий и какую выбрать?

    Зачем нужны системы контроля версий и какую выбрать?

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

    Я всегда пользовался Mercurial (HG) для контроля версий. Она просто ставится, у нее легкие запоминающиеся команды и разобраться в ней очень просто. К ней также есть много приложений-визуализаторов, которые показывают изменения, ветки, коммиты и прочие радости не в виде командной строки, а в пользовательском графическом интерфейсе. И в целом технология меня устраивает, но ведь все почему-то вокруг меня уходят из Mercurial в его конкурента — Git. Сегодня я решил, что не должно это пройти мимо меня, и начал изучать что к чему. По факту, конечно, это такая система контроля версий, просто к ней прикручено гораздо больше интересных сервисов, а для визуализации процесса разработки уже и программа-то не нужна — все делают специализированные онлайн-сервисы, например GitLab. Схема работы строится следующим образом: на сервере инициируется репозиторий, потом он клонируется на gitlab и эта связь постоянна. Разработчики не получают доступ к серверу! Они могут скопировать сайт с gitlab к себе на сервер, провести доработку, оттестировать ее и отправить на gitlab обратно. И оттуда уже доработка пойдет в бой, на главный сервер. На мой взгляд, это очень удобно и практично с точки зрения безопасности бизнеса — сервер всегда в руках бизнеса, любую доработку можно откатить, если все пошло совсем не так. Главное не забывать делать резервные копии баз данных.

    Пока я на самом начале своего образовательного процесса по GitLab, но мне уже нравится. Что особенно хорошо, на каждом этапе настройки даются необходимые для выполнения на сервере команды:

    Невероятно правильный подход. Получается, что порог входа в системы контроля версий значительно снижается. Все-таки нужно признать, что Mercurial изучить чуточку сложнее, во многом из-за страшного вида документации на десятки страниц, где для старта нужно всего 2-3 команды, как на скриншоте выше.