Skip to content

Instantly share code, notes, and snippets.

View denisshevchenko's full-sized avatar
🏠
Working from home

Denis Shevchenko denisshevchenko

🏠
Working from home
View GitHub Profile
# -*- coding: utf-8 -*-
# Главный модуль проекта.
# Библиотека для работы с конфигурационным файлом.
import configparser
import Downloader
from Parser import xmlParser
[DOWNLOADER]
IPv4 = 127.0.0.1
Port = 3000
Login = LOGIN
Password = PASS
PathToKnownHosts = /ssha;dsjf;kjadsf
PathToRemoteXML = https://asdfasdf
SaveTo = /tmp/blablabla
[PARSER]
import System.Directory
import System.Environment
import Control.Exception
import Data.Typeable
import Data.List
data InvalidPath = InvalidPath String deriving (Show)
data FileError = NoSuchFile deriving (Show, Typeable)
data EmptyFile = EmptyFile deriving (Show, Typeable)
{-
Вот это наш .yaml-конфиг:
---
API_URL: https://api.nightscout/v2
API_Secret: asdLKJHh0987ljkhLKJlkjhLKJ
-}
-- Это для того, чтобы сырые литералы "" могли автоматически превращаться, например, в Text.
-- Без них литералы станут типом String, а этот тип неэффективный и считается уже антипаттерном.
cat /sys/class/thermal/thermal_zone*/temp
echo "`cat /sys/class/power_supply/BAT0/energy_now` / `cat /sys/class/power_supply/BAT0/energy_full` * 100"
acpi
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE MultiWayIf #-}
module UserData where
import Text.Read (readMaybe)
import Data.Text
import qualified Data.List as List
import Data.Maybe (isJust, fromJust)
import qualified Data.Text.IO as TIO

Установка Raspbian на MicroSD

  1. Скачать дистрибутив RASPBIAN STRETCH LITE отсюда: https://www.raspberrypi.org/downloads/raspbian/.
  2. Распаковать скачанный архив, чтобы получился файл с расширением .img.

Логинимся по SSH

Как только зелёный светодиод перестал мигать...

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveGeneric #-}
module Main where
import Data.Aeson
import Data.Aeson.Encode.Pretty
import Data.Aeson.Types
import Data.ByteString as B
import qualified Data.ByteString.Lazy.Char8 as LC
let result = decode rawJSON :: Maybe FullWeather
data FullWeather = FullWeather
{ cod :: Int
, message :: Text
getDateFromUser :: IO (Either UserError Day)
getDateFromUser = do
Prelude.putStrLn "Пожалуйста, укажите дату для прогноза в формате ГГГГ-ММ-ДД:"
currentTime <- getCurrentTime
date <- Prelude.getLine
let retrievedDate = utctDay currentTime
dayFromUser = parseTimeM True defaultTimeLocale "%Y-%-m-%-d" date :: Maybe Day
case dayFromUser of
Nothing -> здесь беда, потому что пользователь ввёл какую-то гадость
Just validDay -> do