Skip to content

Instantly share code, notes, and snippets.

Fingercomp Fingercomp

Block or report user

Report or block Fingercomp

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@Fingercomp
Fingercomp / table-pack.md
Last active Jun 13, 2019
О функции `table.pack` и операторе `#` на примере REPL
View table-pack.md

Lua — прекрасный язык программирования. Прежде всего благодаря своей предельной простоте. Но даже в Lua есть свои нюансы.

Допустим, мы хотим создать свой Lua REPL. REPL — Read–Eval–Print Loop — также называется оболочкой (shell) или интерпретатором (interpreter). Из аббриевиатуры должно быть понятно, что эта прога будет делать:

  1. читать ввод
  2. интерпретировать его
  3. принтить выхлоп

Программа и так несложно выглядит, а в Lua ещё есть функция load, о которой

@Fingercomp
Fingercomp / stacktrace.lua
Last active Jun 20, 2019
A simple stacktracer for lua.
View stacktrace.lua
local function insertNonNil(t, v)
if v then
v = tostring(v)
if #v > 0 then
table.insert(t, v)
end
end
end
local function traceback(c)
@Fingercomp
Fingercomp / pcall-load.md
Created Aug 7, 2018
О `pcall` и `load` в Lua
View pcall-load.md

Познакомимся с load. Эта функция берёт первым аргументом строку и компилирует её.

local str = "Тест!"
print(load(str))
--> nil [string "Тест!"]:1: unexpected symbol near '<\208>'

Код выше вернёт странные идеограммы, но если присмотреться, то становится заметно, что именно там происходит.

@Fingercomp
Fingercomp / 00-sound-card-toc.md
Last active Jul 8, 2019
Guide to the Sound Card
View 00-sound-card-toc.md
View 00_weather_readme.markdown

Установка

  1. Скачать файлы unicodedata2.py, wttrin_png.py, parse_query.py и set-bg.sh в ~/.local/share/scripts/background/.
  2. Заменить $CITY_NAME в set-bg.sh на нужное имя города.
  3. Прописать pip3 install pyte pillow requests.
  4. В /usr/share/fonts/truetype создать ubuntu-font-family и запихать туда файл UbuntuMono-R.ttf [откуда-то отсюда][ubuntu-fonts].
  5. Там же должна быть директория ttf-dejavu с файлом DejaVuSansMono.ttf.
  6. Установить feh и imagemagick, если ещё не.
  7. Создать директорию ~/img/bg/ и поместить туда файл background.png с фоном.
  8. Сделать выполняемым файл: chmod +x ~/.local/share/scripts/background/set-bg.sh.
View particly-draw.lua
local com = require("component")
local event = require("event")
local p = com.particle
local image = [[
####...###....#...#####
....#.#...#...#.......#
.###..#...#...#......#.
#.....#...#...#.....#..
View eta.lua
local scale = 0.75
local avgs = {}
local function calcAvg(last)
if #avgs == 0 then
table.insert(avgs, last)
return last
end
local len = #avgs
local sum = 0
View hpm-0078181d8564e97a6cdd0d8510717d23c4707953.lua
local UlikV=load([===[
local rA5U=20160728.17
local Uc06="-[ JSON.lua package by Jeffrey Friedl (http://regex.info/blog/lua/json) version 20160728.17 ]-"local lcBL={VERSION=rA5U,AUTHOR_NOTE=Uc06}local DHPxI=" "
local dx={pretty=true,align_keys=false,indent=DHPxI}
local RRuSHnxf={__tostring=function()return"JSON array"end}RRuSHnxf.__index=RRuSHnxf
local mcYOuT={__tostring=function()return"JSON object"end}mcYOuT.__index=mcYOuT;function lcBL:newArray(iXxD6s)
return setmetatable(iXxD6s or{},RRuSHnxf)end;function lcBL:newObject(oiY)return
setmetatable(oiY or{},mcYOuT)end;local function Rr(FsYIVlkf)
return
View crash.lua
local shell = require("shell")
local fs = require("filesystem")
local args = {...}
local elog = shell.resolve(table.remove(args, 1))
local path = shell.resolve(table.remove(args, 1))
if not elog or not path then
print("USAGE: crash <error log path> <path to program> [arguments...]")
return 1
@Fingercomp
Fingercomp / https-oc-compat.lua
Created Aug 16, 2016
Luascket's https ⟷ OC http libraries compatibility layer
View https-oc-compat.lua
local ltn12 = require("ltn12")
local http = require("http")
local https = {
request = function(params)
local body = nil
if params.source then
body = ""
for chunk in params.source do
body = body .. chunk
You can’t perform that action at this time.