INT 21h

Домашняя страница самого страшного прерывания

Скрипт Caja для закачки файлов на FTP

№ 8004 В разделах: Администрирование Программирование от January 18th, 2016,

Надоело мне файлы руками заливать на всякие обменники когда можно написать простейший bash скрипт и больше не иметь мозг с этой проблемой.

Сегодня нам понадобится:

  • Графическая оболочка Mate (ну которая бывший Gnome 2)
  • curl
  • xsel
  • zenity

Пакет zenity обычно уже предустановлен и предназначен для создания диалоговых окон из консольных скриптов. Идеально для моей нужды. Пакеты с curl и xsel придется доустановить sudo apt-get install curl xsel.

Я написал коммент к каждой строке чтобы было понятно даже непонятливым. Скрипт ложится в директорию ~/.config/caja/scripts/

#!/bin/bash
#установим разделитель "перенос строки" для CAJA_SCRIPT_SELECTED_FILE_PATHS
IFS="
"

#для удобства положил в переменную с более коротким именем
files="$CAJA_SCRIPT_SELECTED_FILE_PATHS"

#урл хранилища файлов. в конец будут добавляться имена закачаных файлов
url="http://4334.selcdn.ru/sharedfiles/"

#проверим а не пустая ли переменная нам упала
[ "$files" == "" ] && exit 1;

#в answer упадет 1 (отмена) или 0 (продолжить).
answer=$(zenity --question --text "Файл станет доступен всем. Заливаем?" --default-cancel)

#проверим что ответил юзер. 
#использую #? чтобы узнать ответ от последней запущеной программы
[ $? -ne 0 ] && exit 1

#ну а тут простой перебор файлов
for filename in $files
do
    #закачиваем курлом на фтп
    curl ftp://ftp.selcdn.ru/sharedfiles/ --user vlad:MySUPAPasswD -T $filename
    #тут определяем имя файла
    basefilename=$(basename $filename)
    #ложим результат в переменную. если несколько файлов, то учтутся и уже залитые файлы
    resultText="$resultText $url$basefilename"
done
#а теперь нежно ложим результат в буфер обмена 
echo $resultText |xsel --clipboard --input

share file caja

Нет комментариев »

Генератор матов

№ 7966 В разделе "Программирование" от January 9th, 2016,

Как бы смешно это не звучало, а разговаривать как поручик Ржевский еще уметь надо :) Рабочий вариант лежит здесь genmat.blindage.org.

2012-09-04_092953

Итак, у существительных есть падежи, как и у прилагательных. Кроме того, еще у них есть род. Также у меня генерируются и глаголы, но я не стал углубляться в литературные изыски и оставил только повелительное наклонение. Вырисовывается небольшой шаблон для генерации: “Да [G:3] тебя [P:2:J] [S:2:J:I]! [P:3:M] ты [S:2:M:I]!”. Сначала указывается тип слова (глагол, прилагательное или существительное). Следом идет этажность и род. Завершает цепочку параметров падеж.

Получается, что в таблице существительных нужно держать корень для мужской формы, женской, а также постфиксы падежей. Тоже самое и для таблицы прилагательных. С глаголами все проще. Но что делать с промежуточными словами? Они также находятся в собственной таблице и только в одной форме. Этого достаточно для начала генерации, но у вас начали появляться слова типа “хуехуевый” или пиздосвинопиздявый”. Решить эту проблему можно введя таблицу тематики. По сути каждая запись в таблице тематики является словом со ссылками на его формы в остальных таблицах.

Пример генерации:
Поручик внезапно отрубился после предательского удара полом о лицо, но через некоторое время пришел в себя и начал пытаться подготовиться к визиту высшего офицерства. “Да чмомусороотмонди этот сучечмошный сапог! Куда он опять подевался?” — нервно прокричал поручик Ржевский, встал на ноги и затем, покачиваясь от легкого опьянения, грязно выругался. Все это время Татьяна сидела в тени и охуевала с происходящего. Несколько моментов спустя она дала себя обнаружить: “Да вон твой сапог под стулом лежит. Ты здесь весь пол заблевал, жопопроёбина ты несчастная. Бери свой козоговяный сапог и уебывай из моей спальни”.

Нет комментариев »

Ежедневная статистика хранилищ Селектел

№ 7643 В разделах: Администрирование Программирование от October 26th, 2015,

Сейчас есть проблемы на стороне Селектел с правильными цифрами в счетчиках. Когда исправят не знают.

Создал специальный скрипт на python, который каждый день по крону дергается и генерирует красивую табличку на html странице. Особо искушеные пользователи могут допилить скрипт и дергать его хоть ежечасно. Лично мне это делать вломы, т.к. нет необходимости. Зачем она нужна? Ну она помогает вычислять хотлинкеров и подобных орков и вместо вставленой ими картинки можно положить красивую фотографию мужского полового хуя ;) Проще говоря, для экономии траффика.

Забрать код можно здесь https://bitbucket.org/21h/selectel-storage-statistics

2015-10-26 02-14-10 Скриншот экрана

Перед использованием необходимо провести настройку вполне известных вам параметров:
selectelUsername = "666"
selectelPassword = "mysuperpassword"
selectelStorages = ["aria2g","skyrim"]
exportDir = "/var/www/radio70.ru/statistics"
DBstorage = '/opt/selectel_stats/statsraw.db'
linecolor1='#FFFCEE'
linecolor2='#EEF6FF'
linecolor3='#FFBC41' #подсветит если траффик больше указанного
trafficProblems=100000 #в килобайтах

Самые обязательные это логин, пароль, список хранилищ, директория для вывода (создастся сама по указанному пути) и путь к базе данных. Вся база данных представляет собой sqlite3 с куууучей хлама внутри. Почему sqlite? Ну он весьма быстр. Но опять же я за определенную плату могу специально для вас могу переделать под какой-нибудь MySQL :)

Нет комментариев »

WebODF – интеграция ODF документа в веб страницу

№ 7370 В разделе "Программирование" от June 20th, 2015,

Допустим, вам необходимо интегрировать ODF документ в страницу для просмотра через браузер. Специально для таких случаев придумана библиотека WebODF. Использовать ее вообще элементарно. Скачиваете библиотечку на ваш сервер и подключаете ее в теге head.

<script src="http://blindage.org/static/webodf/webodf.js" type="text/javascript" charset="utf-8"></script>

Там где нужно показать документ вставляем еще один скрипт и div в который он нарисуется.

<script type="text/javascript" charset="utf-8">
function init() {
  var odfelement = document.getElementById("odf"),
      odfcanvas = new odf.OdfCanvas(odfelement);
  odfcanvas.load("http://blindage.org/odf/stm8-with-the-blinking-led.odt");
}
window.setTimeout(init, 0);
  </script>
<div id="odf"></div>

Пример документа №1
Пример документа №2

Нет комментариев »


Комментарии
  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть более благие цели, вы просто ответьте на мой вопрос,...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно сделать? Допустим я купил данную рацию себе, мне...
  • 21h: слушать никто не запрещает. нет закона, который запрещает слушать. те, кто говорит иначе нагло врут. а если...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng uv-5r, допустим на объект, ну или вообще...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете можно скачать инструкцию к вашей модели рации,...
  • Серегй: Добрый день! Хотелось бы задать пару вопросов по поводу раций, у Вас есть куда можно обратиться ТАТ.
  • 21h: потому, что нейросетью проще. яркость светофора меняется в зависимости от времени суток от маленькой красной...
  • Михаил: А зачем нейросеть? Почему цвет светофора определить без нейросетей?