All streams
Search
Write a publication
Pull to refresh
15
0

Программист

Send message

все эти годы план Б съедал ресурсы, которые могли пойти на развитие собственного проекта

Да, я тоже когда-то давно чувствовал такое в подобной ситуации и принимал решения сконцентрироваться на своих проектах.

Но опыт показал, что это глупость. Свои проекты жрут ресурсы нескончаемо. А провал, для них - это нормальная явление. Mой LittleLisp.js оказался никому не нужен. А самая крутая вещь UniPath.php уже 10 лет как развивается и не может развиться до стабильного релиза.

По этому работа в найме - это мой главный План А. И ресурсы в него я трачу в первую очередь. И это везение если попадается работа, где можно поразвивать свои проекты тоже.

По сути, с момента утраты зуба мы начинаем терять кость в этой области.

Так всегда же можно "подсыпать" искусственной кости и восстановить её объём. Так-что на это можно закрыть глаза.

Хорошая работа. Плюсую!
Есть люди, которым этого как раз не хватает)

Android в этом плане смотрится выигрешнее. На Java относительно легко можно запрограммировать то, что не хватает. Система достаточно открыта. С iOS в этом плане гораздо сложнее.

В телеграмме Kandinsky 3.1 вышел и похоже отключили Kandinsky 2.х. Эх, а 2.2 версия красивее всего генерировала женских персонажей по моим промптам. Грусть, печаль.

Например промпт: full body view, look at viewer, beautiful happy princess sitting on the throne, blond, blue eyes, angelic smile, no makeup, perfect body,
large breast, wide hips, very thin waist, golden ball gown dress, white sleeves, ruffles, backlight glow
Стиль: Детальное фото

Kandinsky 2.2

Kandinsky 3.1

Да, смориться неплохо, но уже что-то не то, как на мой взгляд.

Годная справочная статья. Плюсую.

Я так вижу, Вы хотите начать спор, который превратиться в "срач". Простите, нет. Я не люблю такие вещи. Я за конструктивное общение уважающих друг друга людей. И ещё, я за свободный мир и предлагаю остаться при своих мнениях, убеждениях, взглядах на мир и ограничиться только темой статьи)

За подсказку: как найти контактную информацию админа инстанса - спасибо)

Правда, к сожалению, не все pixelfed-инстансы умеют отвечать на это. Например https://insta.sdns.club/api/v2/instance выдаёт 404-страницу(

HTTPS тормозной протокол. С ним сайты открываются медленнее. Я не хочу чтоб мои сайты открывались и работали медленно.

А с точки зрения безопасности: мне нечего скрывать. У меня ничего ценного нет. Да и мнения я о себе невысокого. Кому я вообще нужен?))

Можно конечно заморочится с самоподписным сертификатом, но мне пока-что лень.

Вы, кстати, не знаете, есть ли какой-нибудь стандартизованный способ узнать кто администратор инстанца и как с ним связаться?

Очень интересная статья) Прям уровня Варламова или даже выше, как на мой
взгляд. К IT конечно почти не относиться, но всё равно интересно.

Если ещё будут такие статьи, то я уверен, что на хабре найдутся люди, которые с удовольствием их почитают и плюсанут)

Тогда я зря потратил свои силы и время. Печалька.

Похоже что с activitypub мне не по пути.

Я перепроверил KeyId, там всё правильно, https нет. У меня на сервере нет и не будет поддержки https.

Я перепроверил подпись на джаве и подпись у меня генерируется правильная.

Вот код, которым проверял:

String message = "(request-target): post /users/1/inbox\nhost: friends.grishka.me\ndate: Sun, 19 Nov 2023 00:04:03 MSK\ndigest: SHA-256=VMA4hX2mi+Wa88vu97Q+JWHm8fWAO1s8xW2Jc7y72eQ=";
byte[] sign = Base64.getDecoder().decode("obYfri5qtRScx51y4JQsn7McQtTU22ZKNTjPWlF7Muq8aQuezlGMsDX7Pwuss7OnLyPrTwMhb2fOBEzsHzWIEtBBD1Le4YDlHBweADTMOX0YymCoAXu4DQezo17U8g3eaM3eNHkI8o1Toh0dkjmTTKg0aciRswwvFDVXxUz99au1UhDk3b68uG2YIw9r3dAuZQTk2SYIliMNSy9K5scc1aoTz87cpl+A/RQm2GXYnp5vml8rzb7J69rOaFckSfRbIMf1sSaiAKR4Ivmt4ltVn1VR+2rwyRoxTGKinmOiJHqx3AwAhCS3rf5yUAHT/tBiTxja4o/SVgN0SaFAYq1NaA=="); 

// 1 - reading public key :
Scanner scanner = new Scanner(new File("activitypub.public.pem"));
StringBuilder sb = new StringBuilder();
while (scanner.hasNextLine()) {
	String line = scanner.nextLine();
	if (line.startsWith("---") == false)
		sb.append( line );
}

// 2 - loading public key 
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec( Base64.getDecoder().decode(sb.toString()));
PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(publicKeySpec);

// 3 - verifying content with signature and content :
Signature sig = Signature.getInstance("SHA256withRSA");
sig.initVerify(publicKey);
sig.update(message.getBytes());
if (sig.verify(sign) == false)
	System.out.println("Bad signature!");
else 
	System.out.println("OK!");

Теперь Ваш сервер отвечает: Bad request: In the absence of a valid LD-signature, HTTP signature must be made by the activity actor

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

Может алгоритм не sha256WithRSAEncryption, а какой-то другой должен быть?

...на тот же адрес, по которому вы видите профиль в браузере:

Профиль чей и где? Непонятно. У меня вообще нет никакого профиля. Я только экспериментирую. Я так понял надо вместо mastodon.social указать свой домен?

Не понятно что за ACTOR_ID когда надо формировать заголовок Signature. Решил ставить URL до своего профиля.

В общем, с третьего захода удалось сгенерировать корректную подпись и начать правильно отдавать информацию о своём акторе. Но выскакивает ошибка Вашего сервера.

Unhandled exception: smithereen.exceptions.InternalServerErrorException: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 'SaemonZixel-y777.ru' for key 'users.username'

Тестирую вот отсюда: http://y777.ru/test-send-activity

Код на PHP следующий:

    $body = '{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "http://y777.ru/createTestPost1",
  "type": "Create",
  "actor": "http://y777.ru/users/saemonzixel",
  "to": "https://www.w3.org/ns/activitystreams#Public",
  "object": {
    "id": "http://y777.ru/testPost1",
    "type": "Note",
    "published": "2023-11-05T12:00:00Z",
    "attributedTo": "http://y777.ru/users/saemonzixel",
    "to": "https://www.w3.org/ns/activitystreams#Public",
    "inReplyTo": "https://friends.grishka.me/posts/884435",
    "content": "<p>Привет с Хабра!</p>"
  }
}';
	$date = date('D, j M Y H:i:s T');
	$digest = "SHA-256=".base64_encode(hash('sha256', $body, true));
	$toSign = "(request-target): post /users/1/inbox\nhost: friends.grishka.me\ndate: $date\ndigest: $digest";
	$private_key = file_get_contents('activitypub.private.pem');
	$binary_signature = "";
	openssl_sign($toSign, $binary_signature, $private_key, 'sha256WithRSAEncryption');

	$public_key_pem = file_get_contents('activitypub.public.pem');
	$r = openssl_verify($toSign, $binary_signature, $public_key_pem, "sha256WithRSAEncryption");
	echo "--- toSign ---\n$toSign\n--- openssl_verify() ---\n$r\n";
	
	$context = stream_context_create(array(
				'http' => array(
					'method' => 'POST',
					'content' => $body,
					'header'=> "Date: $date\r\n" .
						"Digest: $digest\r\n" .
						"Signature: keyId=\"http://y777.ru/users/saemonzixel#main-key\",headers=\"(request-target) host date digest\",signature=\"".base64_encode($binary_signature)."\",algorithm=\"rsa-sha256\"\r\n" .
						"Content-Type: application/jrd+json; charset=utf-8\r\n",
					'ignore_errors' => '1'
				),
				"ssl"=>array(
					"verify_peer"=>false,
					"verify_peer_name"=>false,
				)
			));
	$http_resp = file_get_contents("https://friends.grishka.me/users/1/inbox", false, $context);
	echo "--- Response ---\n$http_resp\n\n----------------\n";
	echo "Signature: keyId=\"http://y777.ru/users/saemonzixel#main-key\",headers=\"(request-target) host date digest\",signature=\"".base64_encode($binary_signature)."\",algorithm=\"rsa-sha256\"\r\n";
	file_put_contents('activitypub.log', print_r($http_resp, true), FILE_APPEND);
	exit;

Интересно, cons-строки могут хранить только 2 части строки или больше?

Есть такая Нижегородская компания - Гарда. И она тоже занимается сетевыми программами комплексами. У них есть система "Периметр", которая специализируется по сетевой защите. Система достаточно большая и, вроде как, много что умеет. Я, к сожалению, слабо разбираюсь в теме, но мне кажется половину из приведённого в статье - она умеет.

Странно, что не в упоминается CoffeeScript. Во времена пика популярности Ruby on Rails был тоже весьма популярен.

И кстати, у DevOps ещё bash-скрипт популярен. Тоже странно, что его нет в опросе.

Хмм... У меня на iOS 7.1 стоит Телеграм 4.9.2 и продолжает работать. Но естественно не всё поддерживает. Всплывает "Unsupported User" для контактов зарегистрированных недавно. В каналах иногда встречаются "Not compatible message type". Звонки тоже не работают. Но пользоваться вполне можно)

Это инстанс социальной сети mastodon. Есть предположение, что он как-то связан с linux.org.ru. Как-бы альтернатива "голубой птички", которая у нас заблокирована. Я там зареган. Аудитория может и скудная, но старается быть дружелюбной)

А вы не хотите завести mastadon-аккаунт например на lor.sh? И делиться время от времени своими успехами более публично?

Несложно догадаться, что непопулярен тут и питон. Вместо него в ходу язык Anaconda.

Гугль говорит, что Anaconda это дистрибутив языков программирования Python и R, включающий набор популярных свободных библиотек и т.д.
Или что-то другое имелось ввиду?

Все пишут на LatinC (произносится как "Латин Эс").

А вот по поводу этой штуки гугл ничего не говорит. А очень интересно, что это за прародитель 1С такой. Очень хотелось бы взглянуть на него)

Information

Rating
Does not participate
Location
Краснодар, Краснодарский край, Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Web Developer
Senior
OOP
Java
Python
PHP
Git
SQL
REST