LINUX.ORG.RU

10
Всего сообщений: 116

К веб-макакам пушистый подкрадывается

В США разворачивается широкая дискуссия по поводу разрушающего воздействия Интернета на окружающую среду. Рост объёма трафика приводит к росту потребления электроэнергии, которая в основном производится из ископаемого топлива. То есть прямо сейчас, когда вы смотрите этот ролик, по мнению американских экологов, вы способствуете усилению парникового эффекта и глобальному потеплению. Подсчитано, что всего один безобидный поисковый запрос в «Гугл» генерирует около 7 г углекислого газа, а такой сервис, как «Ютуб», ежегодно создаёт 11 млн тонн СО2. Всего на Интернет приходится 7% мирового потребления электроэнергии, и эта цифра стремительно растёт. В связи с развитием сетей 5G уже к 2030 году этот показатель превысит 20%, и мировая паутина станет одним из главных врагов экосистемы.

Кабы расстрелы не ввели за растранжиривание ископаемого топлива на тормоза.

https://www.время-вперед.рус/post/%D0%B2%D0%BE%D1%82-%D1%82%D0%B5%D0%BF%D0%B5%D1%80%D1%8C-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82%D1%83-%D1%82%D0%BE%D1%87%D0%BD%D0%BE-%D0%BA%D0%BE%D0%BD%D0%B5%D1%86-%D0%B7%D0%B0%D0%BF%D0%B0%D1%81%D0%B0%D0%B9%D1%82%D0%B5%D1%81%D1%8C-%D1%82%D0%B0%D0%BB%D0%BE%D0%BD%D0%B0%D0%BC%D0%B8

Перемещено a1batross из web-development

 , , ,

ados ()

Работа.

Хочется спросить у жителей ЛОР, чтоб они с технической стороны (а была и не техническая) вы подумали о работодателе.

  1. Тестовая среда под WIndows и доступ в нее по RDP. Причем RDP на не стандартном порту. Там запущена IDEA и нет доступа к GIT (точнее он под учетками других людей).

  2. Рабочая среда обычный докер под Linux.

  3. Нет программиских тестовых сред - тоесть вы не можете паралельно с другим программистом работать в тестовой среде. (а как? Зашел по РДП и как вам работать в разных ветках?)

  4. Тестовая среда работает с боевой базой (не с копией).

  5. Линтеров нет. Код ревью нет. SQL делается конкатентацией строк.

Но ЗП красивая (по рассказам).

Чтоб вы делали на моем месте?

 

dem ()

Tutanota удаляет аккаунты, даже не дав попользоваться

Перенесите куда надо. Короче, зарегистрировался неделю назад на почтовом сервисе Tutanota (мыло с шифрованием). Регался через Tor. Мало того что не дает отправлять письма, пока не пройдет 48 часов (ваш аккаунт проверяется), так еще и зайти не смог по прошествию этих 2х дней.

Invalid login credentials. Please try again.

Естественно, первым делом перепроверил крененшалы, ведь как-то 1й раз после регистрации с ними я заходил - значит вводил все правильно.

Жму Lost account access, ввожу свой Recovery code, получаю опять двацатьпять.

Invalid login credentials.

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

Чего теперь, местные поборники тутаноты будут дальше бить пяткой в грудь и советовать это говнище?

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

Перемещено jollheef из internet

 , , , ,

anonymous ()

Что можно улучшить в данном скрипте?

Шалом.

Сабж. Может что-то можно оптимизировать (для скорости работы, удобства чтения и ПРАВИЛЬНОСТИ)?

#!/bin/sh

# CPUs
getstat_core_temp_separator="/"
getstat_core_temp_suffix="°C"

# Battery
getstat_battery_state_charging="заряжается"
getstat_battery_state_discharging="разряжается"
getstat_battery_state_charged="заряжена"
getstat_battery_state_missing="отсутсвует"
getstat_battery_state_unknown="ошибка"


getstat_sysctl="sysctl -n"
getstat_arg_n="$#"

getstat_core_temperature() {
    getstat_core_n="`${getstat_sysctl} hw.ncpu`"
    while [ ! "$getstat_core_n" -eq "0" ] ; do
	getstat_core_n="$(( ${getstat_core_n} - 1 ))"
	getstat_core_temp="`${getstat_sysctl} dev.cpu.${getstat_core_n}.temperature`"
	getstat_core_temp="`printf "${getstat_core_temp}" | cut -d, -f1`"
	printf "${getstat_core_temp}${getstat_core_temp_suffix}"
	[ "$getstat_core_n" -ge "1" ] && printf "${getstat_core_temp_separator}"
    done
}

getstat_memory_total() {
    getstat_memory_page_size="`${getstat_sysctl} vm.stats.vm.v_page_size`"
    getstat_memory_page_count="`${getstat_sysctl} vm.stats.vm.v_page_count`"
    getstat_memory_total="$(( ${getstat_memory_page_count} * ${getstat_memory_page_size} / 1048576 ))"
    printf "${getstat_memory_total}"
}

getstat_memory_used() {
    getstat_memory_page_size="`${getstat_sysctl} vm.stats.vm.v_page_size`"
    getstat_memory_page_wire="`${getstat_sysctl} vm.stats.vm.v_wire_count`"
    getstat_memory_page_active="`${getstat_sysctl} vm.stats.vm.v_active_count`"
    getstat_memory_used="$(( (${getstat_memory_page_wire} + ${getstat_memory_page_active}) * \
${getstat_memory_page_size} / 1048576 ))"
    printf "${getstat_memory_used}"
}

getstat_memory_free() {
    getstat_memory_free="$(( `getstat_memory_total` - `getstat_memory_used` ))"
    printf "${getstat_memory_free}"
}

getstat_battery_state() {
    getstat_battery_state="`${getstat_sysctl} hw.acpi.battery.state`"
    if [ "$getstat_battery_state" -eq "2" ] ; then
	getstat_battery_state="${getstat_battery_state_charging:=charging}"
    elif [ "$getstat_battery_state" -eq "1" ] ; then
	getstat_battery_state="${getstat_battery_state_discharging:=discharging}"
    elif [ "$getstat_battery_state" -eq "0" ] ; then
	getstat_battery_state="${getstat_battery_state_charged:=charged}"
    elif [ "$getstat_battery_state" -eq "-1" ] ; then
	getstat_battery_state="${getstat_battery_state_missing:=missing}"
    else
	getstat_battery_state="${getstat_battery_state_unknown:=unknown}"
    fi
    printf "${getstat_battery_state}"
}

getstat_battery_life() {
    getstat_battery_life="`${getstat_sysctl} hw.acpi.battery.life`"
    printf "${getstat_battery_life}"
}

while [ "$getstat_arg_n" -ne "0" ] ; do
    getstat_arg_n="$(( ${getstat_arg_n} - 1 ))"
    case ${1} in
	-ct)	getstat_out="${getstat_out} `getstat_core_temperature`" ;;
	-mt)	getstat_out="${getstat_out} `getstat_memory_total`" ;;
	-mu)	getstat_out="${getstat_out} `getstat_memory_used`" ;;
	-mf)	getstat_out="${getstat_out} `getstat_memory_free`" ;;
	-bs)	getstat_out="${getstat_out} `getstat_battery_state`" ;;
	-bl)	getstat_out="${getstat_out} `getstat_battery_life`" ;;
	*)	getstat_out="${getstat_out} `printf "${1}"`" ;;
    esac
    shift
done

echo ${getstat_out}


// Это не конец, будет больше отдавать.

Интересует улучшение конструкции обработки параметров в первую очередь.

Заранее благодарю.

 , , , ,

IPR ()

Где найти пару кодорабов за опыт?

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

 ,

crutch_master ()

php, array, тип ключа

// foo.php
$foo = array(
    "09" => "09",
    "10" => "10");
foreach ($foo as $k => $v)
    echo(gettype($k) . " => " .
         gettype($v));
string => string
integer => string

Как сделать, чтобы ключи сохраняли тип?

 ,

Evenik ()

Ругается компилятор

void__ Scene2::DrawNumeric(int__ num,int__ position)
{
	int__ j = -1,jj=-1;
	std::string str = "";
	for (auto && v : std::to_string(num)) {
		//std::cout << v /*- '0'*/ << "|";
		str += v;
		++j;
		switch (str[j])
		{
		case '0':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[62]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63+position], j);
			break;
		}
		case '1':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[63]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '2':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[64]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '3':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[65]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '4':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[66]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '5':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[67]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '6':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[68]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '7':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[69]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '8':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[70]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		case '9':
		{
			glBindTexture(GL_TEXTURE_2D, IndexTexture[71]);
			EnableTexture(NewTextureCoordinats[0], NewVertexCoordinats[63 + position], j);
			break;
		}
		}
	}
}
ошибки в вижуалке 2015 все ок, а в 2010 вот в строке с for:
Ошибка	11	error C2143: синтаксическая ошибка: отсутствие "," перед ":"	E:\флешка\other\nottoch\Tropic-Island\Tropic-Island\game3\research_very_goodZZZ\Scene2.cpp	452
Ошибка	12	error C2530: v: ссылки должны быть инициализированы	E:\флешка\other\nottoch\Tropic-Island\Tropic-Island\game3\research_very_goodZZZ\Scene2.cpp	452
Ошибка	13	error C3531: v: символ, тип которого содержит спецификатор "auto" должен иметь инициализатор	E:\флешка\other\nottoch\Tropic-Island\Tropic-Island\game3\research_very_goodZZZ\Scene2.cpp	452
Ошибка	14	error C2143: синтаксическая ошибка: отсутствие ";" перед "{"	E:\флешка\other\nottoch\Tropic-Island\Tropic-Island\game3\research_very_goodZZZ\Scene2.cpp	452

 , , , ,

Gremlin_ ()

selenium не обновляет PageSource без пересоздания webdriver-a

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

...
driver.get("https://node1.online.sberbank.ru/PhizIC/private/cards/info.do?id=XXXXXXXX");
...
while (true) {
Thread.sleep(40000);
driver.navigate().refresh();
Thread.sleep(5000);
count = driver.findElement(By.xpath("//span[@class='detailAmount nowrap']"));
...
}
...
count при этом не меняется. Да и, если выключить headless, видно, что цифры на страничке тоже прежние.

При этом если произвести перевод вебдрайвером, то цифры обновляются. Есть стойкое ощущение, что я что-то делаю не так или не тем.

 , , ,

kravzo ()

Человечество скатывается

Привет. Моё субъективное мнение: человек иррационален, он подвластен инстинктам и когнитивным искажениям. Из-за этого мы имеем дефектные технологии, тормозной дырявый глючный, неудобный софт. Взять хотя бы всплывающие окна на сайтах с предложением е-майл рассылки, разрабы реально думают, что я захочу подписаться на рассылку сайта, ещё до того как я хотя бы прочту одну страницу?

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

Уже был претендент когда система безопасности умного дома по ошибке траванула газом жителей (если интересно, найду ссылку).

Это будет мир, где из-за бага в библиотеке facebook-api для node-js робот-охранник отстрелит хозяину руку, и согласно пользовательскому соглашению, компенсаций не будет. Это будет мир, где ваши мысли будут сканировать через Neuralink и вы потом не докажете что сюжет фильма вы придумали, но не успели записать.

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

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

Транспортные карты, электронные дневники, онлайн-кассы - всё движется к этому

Да здравствует гугл и новый дивный мир!

 , , , ,

russian-turist-2019 ()

Flask. RestAPI. Ошибка получения параметров json

Доброго дня. Проект на flask(python 3.6.4). Сделано api. Делал по мануалам в интернете. Тестировал с помощью postman. Ситуация следующая.

В postman выполняю POST запрос на http://localhost:5000/api/v1/users для добавления пользователя. Сontent-type: application-json. В body raw пишу {«mail»:«test@mail.ru», «password»:«12345»}. Все отрабатывает. User добавляется.

Аналогично прекрасно отрабатывает это:

curl -H «Content-Type: application/json» -X POST -d '{«mail»:«test2@mail.ru»,«password»:«123456»}' http://localhost:5000/api/v1/users

Но, если начинаю тестить через RestletClient(Chrome), то ничего не работает. Т.е. я добавляю query parameters (mail и password), в headers указываю Content-Type : application-json. И получаю в ответ при POST-запросе:400 Bad Request. Failed to decode JSON object: Expecting value: line 1 column 1 (char 0).

При этом строка запроса выглядит так: http://localhost:5000/api/v1/users?mail=test@mail.ru&password=1234df Т.е. правильно, но совсем не так,как когда я использую body raw в postman (где все работает). Если content-type не указывать, то ошибка 500. И я так понимаю, что flask не может прочитать параметы в запросе и определяет их как None.

Вот код:

# CREATE_USER
@app.route('/api/v1/users', methods=['POST'])
def create_user():
    _mail = request.json.get("mail")
    _pass = request.json.get("password")
    if _mail is None or _pass is None:
        abort(404) # потеряны аргументы
    if User.query.filter_by(mail = _mail).first() is not None:
        abort(404) # пользователь существует
    new_user = User(mail = _mail)
    new_user.set_password(_pass)
    db.session.add(new_user)
    db.session.commit()
    userID = new_user.id
    data = User.query.filter_by(id=userID).first()
    result = [data.id, data.mail]
    return jsonify(result=result), 201

Что не так? Как правильно прочитать параметры mail и password из запроса? Спасибо!

 , , ,

kerby ()

Django: media storages на разных ПК

Хорошего дня! Разбираюсь с django (1.11.7). Полет проходит нормально, но никак не могу вникнуть с систему хранения media файлов.

Из коробки работает file storage. В settings.py указываю папочку, где лежат файлы и далее обращаюсь к ней. С этим все понятно. Но если мне нужно хранить медиафайлы на другом сервере. Пусть они в одной ЛС, но физически web-сервер и media storage на разных серверах. Есть такой пакет django-storages. Он позволяет использовать сторонние сервера s3 по типу amazon. Не мой вариант.

Теперь краткая суть: какими средствами можно реализовать хранение файлов на других серверах? Но не сторонних сервисах типа amazon, а у себя.

Нюанс в том, что медиаконтент (видео и картинки) просто кладутся на медиасервер. Т.е. django этот процесс сейчас не контролирует. Возможно нужно какой-то учет в бд вести. Я просто не очень понимаю пока как это организовать. Или просто файл должен иметь уникальное имя и по этому имени искать по стореджам пока не найдется. Но это глупо наверно. Проще в бд иметь список серверов и файлов. Искать по таблице нужный файл и обращаться уже на конкретный сервер.

Допускаю, что средствами django это не реализовать. Возможно нужно переложить часть на тот же nginx, например.

Я буду рад любым пояснениям по данному вопросу. За examples отдельная благодарность. Учиться приходится на ходу просто.

P.S. Изучал коды страниц некоторых сайтов, там в src указывается http ссылка, при чем не на домен самого сайта, а видимо обращение идет на media storage непосредственно. Вот это видимо то, что мне нужно. Как это работает?

 , , , ,

kerby ()

Открывается конкурс дураков на самую нечитабельную программу

Привет, форумчане!

Тема конкурса навеяна этим тредом и программкой http://www.ioccc.org/1984/anonymous/anonymous.c , на которую я пару-тройку месяцев назад наткнулся в каментах к этой теме.

Итак, условия конкурса на главного дурака: написать самую дурацкую и нечитабельную программу, которая, однако, нормально компилится и желательно что-то делает. В каментах указывать язык программирования, как откомпилировать и как запускать. Ну и что она вообще делает ещё можно указать. Дополнительное условие конкурса на главного антидурака: восстановить исходный код самой дурацкой программы так, чтобы он снова стал понятен. Антидурак по определению тоже является дураком, т. к. умный человек, понятно, такой хренью заниматься не будет.

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

Призов нет. Только моральные поощрения самых фееричных дураков в каментах типа «афтар, пеши исчо!»

Я, в качестве конферансье и одновременно участника, открываю конкурс своей программой на Си your_name.c, содержащей краткий комментарий, 1 инклуд (для подавления предупреждений, а так можно было бы обойтись и без него), нескольких десятков дефайнов и далее собственно программы, состоящей исключительно из знаков подчёркивания («_»), разделённых пробелами или ньюлайнами.

/**
 * The program your_name output your name.
 *
 * Module:  your_name.c
 * Compile: gcc -o your_name your_name.c
 * Call:    ./you_name
 *       or
 *          ./you_name firstname secondname thirdname ...
 * Author:  aureliano15
 * License: GPL v.3.
 * Copyleft (Ɔ) 2017.
 */
#include <stdio.h>

#define _ (
#define __ )
#define ___ ,
#define ____ [
#define _____ ]
#define ______ ;
#define _______ {
#define ________ }
#define _________ =
#define __________ <
#define ___________ *
#define ____________ +
#define _____________ -
#define ______________ **
#define _______________(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) i##p
#define ________________(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) i##p##c
#define _________________(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) p##k##g##b
#define __________________(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) e##b##m##p##c
#define ___________________(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r) h##j##a##q##c##l
#define _______________________________(x) #x
#define ____________________ _______________(+,-,+,/,?,=,~,-,+,/,~,^,?,+,-,+,=,?)
#define _____________________ _______________(+,-,+,/,?,^,~,-,=,/,~,^,?,+,-,=,/,?)
#define ______________________ ________________(z,v,t,b,j,i,x,0,i,w,u,o,9,t,a,n,f,e)
#define _______________________ _________________(m,n,o,i,x,y,i,j,k,b,a,x,y,k,l,m,n,u)
#define ________________________ _________________(s,r,q,d,c,b,a,e,f,g,h,i,j,a,b,c,d,e)
#define _________________________ _______________(a,b,c,d,e,f,g,h,i,j,a,b,c,d,e,f,g,h)
#define __________________________ _________________(f,e,d,c,b,a,s,t,u,k,l,a,b,c,d,e,f,g)
#define ___________________________ ___________________(i,s,t,u,m,n,o,p,q,r,s,f,e,d,l,m,n,o)
#define ____________________________ __________________(h,g,s,t,f,f,g,h,a,b,c,d,e,r,s,t,u,0)
#define _____________________________ ___________________(t,s,r,q,p,p,q,r,s,e,i,n,m,l,s,t,u,v)
#define ______________________________ ________________(p,q,r,s,j,i,h,g,f,e,d,k,l,m,n,o,p,q)
#define ____________________________________________________ __________________(s,t,n,m,s,t,a,b,i,j,k,c,d,e,h,i,j,m)
#define ________________________________ _______________________________(%)
#define _________________________________ _______________________________(:)
#define __________________________________ _______________________________(_)
#define ___________________________________ _______________________________(a)
#define ___________________________________________________ _______________________________(d)
#define ____________________________________ _______________________________(e)
#define _____________________________________ _______________________________(i)
#define ______________________________________ _______________________________(m)
#define _______________________________________ _______________________________(n)
#define ________________________________________ _______________________________(o)
#define _________________________________________ _______________________________(r)
#define __________________________________________ _______________________________(s)
#define ___________________________________________ _______________________________(t)
#define ____________________________________________ _______________________________(u)
#define _____________________________________________ _______________________________(y)
#define ______________________________________________ _______________________________(\n)

______________________ _______________________ _ ______________________
_______________________________________________ ___ ________________________
______________ ________________________________________________ __ _______
________________________ _________________________________________________
____ ___________ ____________________________________ _____________
___________ ________________________________ _____ ______
______________________ __________________________________________________
______ _________________________ _
_______________________________________________ _____________________
___________ _______________________________________ _____________ ___________
______________________________________ __ ___________________________ _
____________________________________ _______________________________________
___________________________________________
____________________________________ _________________________________________
__________________________________
_____________________________________________
________________________________________
____________________________________________
_________________________________________ __________________________________
_______________________________________ ___________________________________
______________________________________ ____________________________________
_________________________________ __________________________________ __ ___
____________________________ _
_________________________________________________ ___ ___________
___________________________________________________ _____________ ___________
________________________________ ___
____________________________________________________ __ ___
___________________________ _ _____________________________________________
________________________________________
____________________________________________
_________________________________________ __________________________________
_______________________________________ ___________________________________
______________________________________ ____________________________________
__________________________________ _____________________________________
__________________________________________ __________________________________
________________________________ __________________________________________
______________________________________________ ___
_________________________________________________ __ ______
__________________________ _______ ___________________________ _
_____________________________________________
________________________________________
____________________________________________
_________________________________________
__________________________________ _______________________________________
___________________________________ ______________________________________
____________________________________ __________________________________
_____________________________________
__________________________________________ __________________________________
__ ______ ______________________________ _
__________________________________________________ _________ ___________
_______________________________________ _____________ ___________
______________________________________ ______
__________________________________________________ __________
_______________________________________________ ______ ____________________
__________________________________________________ __
___________________________ _ ________________________________
__________________________________________ __________________________________
___ ___________ _ ________________________________________________
____________ __________________________________________________ __ __ ______
___________________________ _ ______________________________________________
__ ______ ________ _____________________________ ___________
______________________________________ _____________ ___________
______________________________________ ______ ________

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

UPD от 8 апреля 2018. Оставлю-ка здесь для себя на память из этого поста, чтоб не потерялось, из той же оперы:

/**
 * Программа putrnd использует суперслучайный алгоритм для генерации
 * суперслучайного пароля. Используйте её для генерации надёжных паролей!
 *
 * Compile: gcc -o putrnd putrnd.c
 * Call:    ./putrnd
 *
 * Author:  aureliano15
 * License: GPL v.3.
 * Copyleft (Ɔ) 2018.
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
  srand(time(0));
  int n = rand(), d1=87, d2=0, d3=3, d4=0, d5=0, d6=0, d7=0;
  n |= 175684;
  n &= 203331;
  n += 202755;
  n /= 2;
  n--;
  n >>= 2;
  while(putchar(n) && d1>=0)
  {
      d1=(d1-d2)/d3-d4+d5+d6+d7;
      d6-=d7-d6;
      if(d4)
      {
          d5+=5;
          d6-=54;
          d7+=54;
      }
      if(d2)
          ++d4;
      ++d2;
      ++d3;
      n+=d1;
  }
  d5-=5;
  return (n&d5)-d5;
}

и второй, немного более запутанный вариант:

/**
 * Программа putrndgoto использует суперслучайный и суперхитрый алгоритм
 * с метками для генерации суперслучайного пароля. Используйте её для
 * генерации надёжных паролей!
 *
 * Compile: gcc -o putrndgoto putrndgoto.c
 * Call:    ./putrndgoto
 *
 * Author:  aureliano15
 * License: GPL v.3.
 * Copyleft (Ɔ) 2018.
 */

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
  srand(time(0));
  int n = rand(), d1=87, d2=0, d3=3, d4=0, d5=0, d6=0, d7=0;
  goto l13;
  l01: d6-=54; goto l04;
  l02: ++d3; goto l17;
  l03: putchar(n); goto l19;
  l04: d7+=54; goto l12;
  l05: n--; goto l09;
  l06: d6-=d7-d6; goto l10;
  l07: n &= 203331; goto l15;
  l08: ++d2; goto l02;
  l09: n >>= 2; goto l03;
  l10: if(d4) goto l16; goto l12;
  l11: ++d4; goto l08;
  l12: if(d2) goto l11; goto l08;
  l13: n |= 175684; goto l07;
  l14: d1=(d1-d2)/d3-d4+d5+d6+d7; goto l06;
  l15: n += 202755; goto l21;
  l16: d5+=5; goto l01;
  l17: n+=d1; goto l03;
  l18: d5-=5; goto l20;
  l19: if(d1<0) goto l18; goto l14;
  l20: return (n&d5)-d5;
  l21: n /= 2; goto l05;
}

 , , ,

aureliano15 ()

Из Debian Stable выкинули PHP5

https://packages.debian.org/search?keywords=php5&searchon=names&suite...

Пруфскрин для истории.

Интересные наблюдения:

  • из stable выкинули
  • из testing тоже
  • в sid всё есть. Кроме метапакета

Итого получается, что Stable не только для десктопа не готов из-за их наркоманской политики замораживания первых попавшихся версий и выкидывания непромёрзших до следующего релиза. Он даже для серверов не готов. Ибо тонны васянского говнокода, использующего mysql_, переписывать никто не будет. PHP7-хипстеры с фреймворками и сахаром — из другой оперы вообще, ближе к Ruby и Node.JS, чем к классическому PHP-говнодевелопменту.

Непонятно только, как теперь обновлять сервера. Я и сторонних-то реп с пакетами для Stretch не нашёл. Только сырцы на Launchpad, которые даже не собираются.

 , , , ,

bodqhrohro_promo ()

lua: os.execute с параметрами

Очень нужен example как в lua скрипте выполнить команду и передать параметры, взятые из переменной. Например, создать папку, а имя папки взять из ранее указанной переменной. Используя os.execute(). У меня либо не берется никакое значение, либо принимается имя переменной, но не ее значение. В интернетах синтаксис скудно описан по это команде. Все что смог нарыть попробовал, но ничего не работает. Спасибо!

 , ,

kerby ()

Запуск python скрипта с параметрами из bash

Добрейшего дня! Трабл. Есть скрипт ip-up, который отрабатывает при подключении pptp-клиента. Есть скрипт, назову его условно connect, которому передаются параметры от ip-up. Скрипты на bash. Все прекрасно работает. Возникла необходимость переписать bash-скрипт на python3. Скрипт умеет принимать параметры. Проблем тут нет. Проблема возникает когда, я пытаюсь передать параметры от ip-up. То есть connect(bash) принимает параметры, а connect(python) не воспринимает их. Если запускаю вручную в терминале (debian 8):

python3 ./connect.py parametr1 parametr2 parametr3
Все четко. Добавил в код вывод значений передаваемых параметров в файл. Все красиво выводится. Вывод: скрпт работает. Ок! В скрипте ip-up добавляю строку на запуск моего скрипта. Вангую гневные комменты. Да, я знаю, есть папочка ip-up.d. Оттуда скрипты запускаются сами при коннекте. В данном случае не принципиально. На bash скрипт прекрасно запускался и путем прописывания команды на его запуск прямо в ip-up скрипте с параметрами. Дак вот, подшаманил скрипт на питоне, чтобы тот признаки жизни подавал при старте и получается картина такая. Клиент подключается -> стартует ip-up и запускает скрипт python c параметрами-> стартует скрипт python, доходит до места где параметры заносятся в переменные и встает. Повторюсь, ip-up скрипт точно передает параметры. Проверено на другом принимающем их скрипте, но на bash. Python-скрипт понимает параметры. При ручном запуске скрипта, он успешно отрабатывает. Проблема, что автоматически эта конструкция не работает у меня. Есть идеи? Спасибо!

 , , ,

kerby ()

Странности с Pidgin и сетью

Конфигурация сети на текущей машине такова: более-менее регулярно поднят только интерфейс ppp0 от USB-свистка, через который доступ в интернеты (звонит wvdial). Ещё есть редкоиспользуемые eth0 и wlan0 от порта и WiFi-карточки соответственно.

Обычно, когда я стартую Pidgin, он ни к одному аккаунту (ни Jabber, ни Hangouts, ни Skype, ни IRC, ни Matrix) сам не подключается. Все висят бесконечно в списке аккаунтов серыми. Нужные учётки приходится выключать/включать, тогда подключается.

И вот что интересно, когда я: 1) поднимаю eth0; 2) подключаю кроссовер-кабелем другую машину, она запускается и устанавливает сетевое подключение — Pidgin внезапно прочухивается и начинает подключаться ко всем аккаунтам. При том, что на той машине интернетов нет, она сама через прокси на текущей машине в них ходит.

Почему так? Может, Pidgin триггера какого-то ждёт?

 , , , ,

bodqhrohro_promo ()

PyCharm + iptc

Всем доброго дня =). Разбираюсь с python (v.3.5, PyCharm CE 2017.2 на debian 9 stable). Хочу использовать модуль iptc. При компиляции ошибка:

File "/usr/local/lib/python3.5/dist-packages/iptc/xtables.py", line 812, in <module>
    raise XTablesError("can't find directory with extensions; "
iptc.xtables.XTablesError: can't find directory with extensions; please set XTABLES_LIBDIR
В Google говорят, есть такой баг, типа пути отличаются и у меня по факту библиотеки ищутся не по тому пути. Решение: прописать путь к папке с библиотеками.
try XTABLES_LIBDIR=/usr/lib/x86_64-linux-gnu/xtables/ after making sure iptables is installed.
Проверил у себя. Папочка есть, библиотеки в ней лежат. Осталось только путь указать и все! НО! В коде явно прописал - не работает.В настройках интерпретатора pycharm прописал путь к папке - не работает. Наверно, я что-то делаю не так. Посоветуйте как прописать правильно путь к библиотекам? Спасибо.

 , , ,

kerby ()

Web framework или среда для Web-разработки для новичка

Здравствуйте! Одностраничные сайты на голом HTML (уровень ИЗИ) делал лет 10 назад во время учебы. Сейчас работаю с linux серверами и хочу сделать простенькую web-панель для мониторинга и управления сервером.Готовые панели хороши и богаты функционалом, но для моих задач это не подходит к сожалению. Нужно чтобы можно было запускать баш-скрипты в web-интерфейсе. Мониторить состояние сервисов. Например, выводить список клиентов OpenVPN. Работать нужно будет и с бд (пока это только MySQL).Основная проблема в отсутствии опыта и не знание с какого бока подойти. Суть обращения: есть базовые знания HTML и совсем чуть-чуть php. Но Web-сервер поднять могу (ну хоть что-то :)). Коротко о задачах, которые нужно реализовать я написал. Подскажите на чем/с помощью чего можно сделать учитывая смешной опыт. И желательно, чтобы влиться в процесс разработки можно было бы сразу, параллельно читая маны. Потому что задача важная сроки небольшие. Хотя бы за месяц надо наваять хоть что-то! Делаю для «себя» поэтому на проф продукт на выходе не претендую. Все ради удобства и автоматизации.

 , ,

kerby ()

systemd делает rm -rf /

https://github.com/systemd/systemd/issues/5644

Для Ъ: в systemd есть механизм для очистки временных директорий, который, в том числе, может удалять файлы по маске. В маску «/tmp/.*» у systemd подпадает в том числе и «/tmp/..». Такие дела.

P.S. Да, я знаю, что эту проблему уже починили, но это не делает быдлокод менее эпичным.

 , ,

hateyoufeel ()

Держите мой HelloWorld на Java

Собственно вот - мое первое приложение на Java и первый проект на GitHub (до этого писал только Web и гитхабом не пользовался)

Приложение - гуевый Wake-On-Lan, который умеет сохранять список компьютеров и позволяет выбрать сетевой интерфейс для отправки «магического» пакета

Почему я решил написать это приложение

Дело в том, что:

1) Я, являясь обладателем вендопланшета (не арм), не нашел приложений для WakeOnLan, которые бы корректно работали под офтопиком, а точнее нормально слали бы пакет, если в винде больше одного сетевого интерфейса

2) Хотел попрактиковаться в разработке на Java и получить комментарии многоуважаемых лоровцев, так как, повторюсь, это моя первая не Web разработка и я хотел бы выслушать критику насчет правильности реализации и понимания мной принципов построения графических приложения

Скриншот приложения: https://imgur.com/a/TyCxu

Репозиторий Github: https://github.com/r0ck3r/WoL

 , ,

r0ck3r ()