Лидеры
Популярный контент
Показан контент с высокой репутацией 14.05.2016 во всех областях
-
1 баллНачалось всё с пустого файла. Набросав костылей, ловисипедов и более-менее нормального кода... Рад представить вам свой ламповый репозиторий на ГитХабике с набором программок, написанных на Python. На текущий момент все они в какой-то мере взаимодействуют с Minecraft. По-порядку. Чат-клиент Так как блог так или иначе обязан подчиняться правилам, я упоминаю только один чат-клиент под именем "cc-chat". Кое-как подёргав API форума, смог сделать небольшую программу, которая сейчас умеет работать с чатом (отправлять и получать сообщения из/в чат (-а) нашего форума). Интерфейс простой. Внизу строка ввода, справа немного кнопок, лист онлайна и сам чат. К слову, клик по нику с контролом — вставить в строку его, а клик с альтом — открыть профиль в браузере. Но это так, плюшки. Если тыкнуть по большой кнопке [ⓘ], окно с тонной всякой информации. Здесь и ТОПы, и места в них, и баланс, и голоса. Особая благодарность @cyber01 за API. Установка Для начала установите Python 3, BeautifulSoup, PyGObject. Скачайте программу с Гитхаба и запустите её. Создастся файл конфигурации, путь к нему будет указан в диалоге. Теперь перейдите на страницу чата, откройте DevTools. Открыв вкладку "Network", нажмите на кнопку [Обновить] в чате. Появится запрос в списке. Откройте URL запроса в отдельной вкладке и скопируйте всё, что находится между secure_key= и &type. Это есть секретный ключ, который, естественно, никому не нужно давать. Откройте файл конфигурации в редакторе и в первую строку вставьте этот ключ. Затем в браузере найдите Cookies для сайта, скопируйте их и вставьте во вторую строку браузера. Всё это требуется из-за костыльного АПИ форума =\ Если всё хорошо, при попытке запустить программу, она не завершится с ошибкой. К слову, в трее появится значок программы, левый клик по которой скрывает или показывает окно. Мониторилка Пропустив ту самую программу, идём к mc-monitor. Это небольшое приложение, которое полностью умещается в трее. Позволяет мониторить сервера Minecraft без захода на всякие сайты. Кроме того, имеется таймер, который "звенит" каждые 24 часа. Полезно, чтобы не забыть про голосование. Установка Установите, если ещё не сделали, Python 3, PyGObject. Просто запустите программу. Скопируйте путь к файлу кнфигурации и откройте его в редакторе. Там можно указать список серверов в следующем формате: адрес.сервера:порт=Имя сервера По строке на каждый сервер. Баги, глюки, пуллы, вопросы и сырцы Ищите на GitHub: https://github.com/Fingercomp/python-utils/
-
1 баллВеб сервер на Lua. Часть 1: Установка Здравствуйте. Вы читаете запись из цикла "Веб сервер на Lua". В конце данного цикла у нас получится вполне работоспособный веб сайт, причем быстрый, да еще и на Lua. Я все действия буду производить в такой среде как "c9", сайт будет доступен под адресом: http://lua-includeralex.c9.io/ Все файлы, вы можете посмотреть тут: http://ide.c9.io/includeralex/lua Что, ж поехали. В этой части мы установим необходимый софт на наш сервер, увидим некий "Hello World!". Вступление Lua — мощный и быстрый скриптовый язык, который очень легко встраивается в C. OpenResty — это сборка Nginx с множеством сторонних модулей, в том числе для неблокирующего доступа к популярным БД. Последние версии используют LuaJIT для исполнения Lua. Разработчик Yichun Zhang (США, место работы: CloudFlare, основной разработчик lua-nginx-module). Lapis — это веб-фрейморк для написания веб-приложений на Lua и MoonScript, который живёт внутри OpenResty. Установка Со вступлением разобрались, теперь разберемся с установкой всего этого дела на наш сервер. Итак, что нам нужно: Lapis, OpenResty, Nginx, LuaRocks. Для начала: Установите perl 5.6.1+, libreadline, libpcre и libssl и убедитесь, что доступна команда ldconfig (её родительская папка может отсутствовать в PATH). Объяснять установку nginx не буду, это легко узнать на официальном сайте, поэтому сразу перейдем к установке OpenResty. Внимание, все объяснения по установке приведены для Линукса, объяснение для Виндовса и Мака возможно, будет в других частях цикла. Итак, установка OpenResty: $ wget http://openresty.org/download/ngx_openresty-1.7.4.1.tar.gz$ tar xzvf ngx_openresty-1.7.4.1.tar.gz$ cd ngx_openresty-1.7.4.1/$ ./configure$ make# make install После ввода этих команд (последовательно, конечно) у вас будет установлен OpenResty. Перейдем к LuaRocks. LuaRocks - это пакетный менеджер для Луа. Информацию о нем можно найти на https://luarocks.org/ В LuaRocks есть много вкусного, там тебе и OpenGL, и SSL, и moonscript, но сейчас не об этом. Установим LuaRocks, следуя инструкциям по установке на сайте. Если же у вас Ubuntu, как, впрочем, и у меня, вы можете установить LuaRocks напрямую из репы: # apt-get install luarocks Следующим шагом будет установка самого Lapis. Для этого воспользуемся LuaRocks, который мы только что скачали. # luarocks install lapis С установкой софта покончено. Перейдем к настройке всего этого. Настройка Для начала создадим "скелет" нашего сайта. Lapis сам сделает это за нас. $ lapis new --luawrote nginx.confwrote mime.typeswrote app.lua Ключ lua нужен, тк мы делаем сайт именно на lua, а не на moonscript. Следующим шагом для нас будет запуск сервера. $ lapis server Lapis автоматический запустит сервер и создаст структуру папок. На этом наш сайт готов, убеждаемся в этом. Проверка Заходим по адресу, на который настроен nginx, и узреваем сиё чудо: Это означает, что lapis настроен правильно, и мы можем приступать к работе, но об этом - в следующей части цикла (самому надо разобраться) Что-ж, на этом все. Enjoy!
-
1 баллВеб сервер на Lua. Часть 2: Структура Здравствуйте. Вы читаете запись из цикла "Веб сервер на Lua". В конце данного цикла у нас получится вполне работоспособный веб сайт, причем быстрый, да еще и на Lua. Я все действия буду производить в такой среде как "c9", сайт будет доступен под адресом: http://lua-includeralex.c9.io/ Все файлы, вы можете посмотреть тут: http://ide.c9.io/includeralex/lua Что, ж поехали. В этой части мы создадим структуру нашего сайта, а также узнаем о некоторых фишках Lapis. Структура Начнем, пожалуй с со структуры нашего веб-приложения. .├── app.lua // Входная точка приложения├── client_body_temp // папка с tmp файлами├── fastcgi_temp // папка с tmp файлами├── logs // папка с логами nginx'а│ ├── access.log // думаю, все знакомы с логами nginx│ ├── error.log│ └── nginx.pid├── mime.types // файл с mime типами├── nginx.conf // конфигурационный файл nginx├── nginx.conf.compiled├── proxy_temp // папка с tmp файлами├── public // папка с публичными файлами│ ├── script.js│ └── style.css├── scgi_temp // папка с tmp файлами├── uwsgi_temp // папка с tmp файлами└── views // папка с нашими вьюшками ├── index.etlua └── layout.etlua // шаблон для всех страниц В файле app.lua находится весь код нашего приложения. В файле nginx.conf находятся настройки NGINX В папке public находятся все публичные файлы, например: Файл: public/style.cssURL к файлу: хост.домен/style.css В папке views находятся наши "вьюшки", они используются при рендере наших страниц, в этой папке должны находится только те файлы, расширение которых == .etlua. О etlua мы поговорим чуть позже. Код Как вообще будет работать наше приложение? Да, очень просто. Всю логику мы будем описывать в файле app.lua. Посмотрим на код простейшего приложения на Lapis: local lapis = require("lapis")local app = lapis.Application()app:get("/", function(self) return "Контент страницы"end)return app Сначала мы подключаем сам lapis, далее мы создаем приложение lapis, используя метод Application. Потом создаем роутер на путь "/" который возвращает нам контент страницы. В конце концов мы возвращаем наше приложение. Все довольно просто. Используя полученные знания мы можем написать другой код: local lapis = require("lapis")local app = lapis.Application()function init() -- функция инициализации app:enable("etlua") app.layout = require "views.layout"endfunction getFile(path) return io.open(path,"r"):read("*all")endfunction index(self) -- функция получения index self.page_title = "To-Do App" return {render = "index"}end-- роутеры страницapp:get("/", index)-- 404 ошибкаapp.handle_404 = function(self) page = io.open("public"..self.req.parsed_url.path,"r") if page then return {layout = false, page:read("*all")} else return "Not found!" endendinit()return app Тут мы можем узреть вещи, неизвестные нам. А именно: app.handle_404 render = "index" app:enable("etlua") app.layout = require "views.layout" app.handle_404 - функция которая вызывается при ошибке "404", мы ее переопределяем на свою функцию. Наша функция - выполняет очень дельные вещи. app.handle_404 вызывается если роутер для страницы не найден. В нашем случае мы проверяем, есть ли файл по пути public..<url_не_найденного_роутера>, если он есть - мы выводим его контент, параметр layout = false делает так, чтоб мы возвращали не контент сайта, а полный код сайта. Если такого файла нет - мы пишем сообщение об ошибке "404 не найдено". render = "index" - рендерит файл (с расширением .etlua), который находится в папке views, о которой мы уже говорили. app:enable("etlua") - включает шаблонизатор EtLua, если мы это не напишем - то потеряем огромный функционал Lapis. app.layout = require "views.layout" - устанавливает стандартный шаблон для сайта, по пути /views/layout.etlua Итак, разобрались с кодом, перейдем к шаблонизатору. Шаблонизатор: EtLua Шаблонизатор EtLua очень похож на PHP. Рассмотрим пример кода: -- views/layout.etlua<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title><%= page_title or "Page from Lua" %></title> <%= page_headers or "" %></head><body> <% content_for("inner") %></body></html> То что находится в <% %> - луа код. Мы можем выполнять lua прямо тут. То что находится в <%= %> - возвращает то что нам отдал луа код - в html. Например: <title><%= "Page from Lua" %></title>Эквивалентно:<title>Page from Lua</title> На этом все. Enjoy!
Эта таблица лидеров рассчитана в Москва/GMT+03:00
