LINUX.ORG.RU
ФорумTalks

С Днём программиста! (2026 год)

 , ,


0

1
$ cat src/main.rs
use time::OffsetDateTime;
use time::UtcOffset;

fn main() {
    let local_offset = UtcOffset::current_local_offset().unwrap_or(UtcOffset::UTC);
    let now = OffsetDateTime::now_utc().to_offset(local_offset);
    let yday = now.ordinal();

    println!("Текущий день года: {}", yday);
}
$ cat Cargo.toml
[package]
name = "daynumber2"
version = "0.1.0"
edition = "2024"

[dependencies]
time = { version = "0.3.55", features = ["std", "local-offset"] }
$ cargo build --release
   Compiling libc v0.2.189
   Compiling deranged v0.5.8
   Compiling powerfmt v0.2.0
   Compiling num_threads v0.1.7
   Compiling num-conv v0.2.2
   Compiling time-core v0.1.9
   Compiling time v0.3.55
   Compiling daynumber2 v0.1.0 (/mnt/mpt1/new2026/sorghum/_9462625/rustttrl/0000/daynumber2)
    Finished `release` profile [optimized] target(s) in 1.08s
$ ./target/release/daynumber2
Текущий день года: 256
$

С праздником!

★★★★★

С праздником!

Спасибо. Поздравляю всех единомышленников и желающих к ним присоединиться.

Кто как считает, научить программировать на промышленном уровне можно любого бездаря или врожденную способность созидать возможно лишь только развить, а научить этому невозможно?

Enthusiast ★★★☆
()

А «футболки для программистов» носишь ?

Bad_ptr ★★★★★
()

тапками не кидайтесь поздравляю от души , я сварщик если что…

#include <locale.h>
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int main() {
	setlocale(LC_ALL, "");
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	printf("\n\033[36m   Поздравление\n\n");
	cout << "\n";
	while (true) {
		cout << " ";
	L1:
		char a = _getch();
		if (a == 13) { cout << "\a"; goto L1; }
		else if (a == 0x1b) { break; }
		else if (a == ' ') { cout << "\a"; }
		cout << "\r\033[36m С Днём программиста : \033[31m" << a;
	}
	cout << "\n\a\033[36m";
	Sleep(2000);
	return 0;
}
endspiel
()
from datetime import datetime

if datetime.now().timetuple().tm_yday == 256:
    print('С Днем Программиста!')
cluge
()

> let local_offset = UtcOffset::current_local_offset().unwrap_or(UtcOffset::UTC);

> let now = OffsetDateTime::now_utc().to_offset(local_offset);

Поздравление в стиле раста звучало бы следующим образом:

Поздравляю с календарным днём сегодняшнего календарного дня этого календарного месяца текущего календарного года настоящего часового пояса программиста!

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)
Ответ на: комментарий от Enthusiast

Бездаря научить невозможно, на то он и бездарь.

anc ★★★★★
()

А правда что в этот день программисты купаются в фонтанах и обливают друг друга лавандовым рафом?

LightDiver ★★★★★
()
Ответ на: комментарий от Enthusiast

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

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 4)

; nasm -f elf32 day256.asm -o day256.o
; ld -m elf_i386 -T link.ld day256.o -o day256.elf

bits 32

MB_MAGIC    equ 0x1BADB002
MB_FLAGS    equ 0
MB_CHECKSUM equ -(MB_MAGIC + MB_FLAGS)

section .multiboot
align 4
    dd MB_MAGIC
    dd MB_FLAGS
    dd MB_CHECKSUM

section .rodata
msg_yes db "Happy Programmer's Day!", 0
msg_no  db "Not today...", 0

cum_days dw  0, 31, 59, 90,120,151,181,212,243,273,304,334

section .bss
day     resb 1
month   resb 1
year    resw 1

section .text
global _start
_start:
    mov al, 0x07
    call cmos_read
    call bcd_to_bin
    mov [day], al

    mov al, 0x08
    call cmos_read
    call bcd_to_bin
    mov [month], al

    mov al, 0x09
    call cmos_read
    call bcd_to_bin
    movzx eax, al
    mov [year], ax

    movzx eax, byte [month]
    dec eax
    movzx ecx, byte [cum_days + eax*2]
    movzx edx, byte [day]
    add ecx, edx

    cmp byte [month], 2
    jbe .no_corr
    movzx eax, word [year]
    test eax, 3
    jnz .no_corr
    inc ecx
.no_corr:
    cmp ecx, 256
    jne .not_today
    mov esi, msg_yes
    jmp .print
.not_today:
    mov esi, msg_no
.print:
    mov edi, 0xB8000
    mov ah, 0x0F
.loop:
    lodsb
    test al, al
    jz .done
    mov [edi], ax
    add edi, 2
    jmp .loop
.done:
    cli
.hang:
    hlt
    jmp .hang
cmos_read:
    or al, 0x80
    out 0x70, al
    in  al, 0x71
    ret
bcd_to_bin:
    push bx
    mov  bl, al
    and  bl, 0x0F
    shr  al, 4
    mov  bh, 10
    mul  bh
    add  al, bl
    pop  bx
    ret
cluge
()
Ответ на: комментарий от madcore
test (date +%j) -eq 256; and echo 'С Днем Программиста!1'

Вариант для fish.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от cluge

У тебя ошибка, оно 2100 год за високосный посчитает (и вообще непонятно зачем делать movzx 8->32, обрезать до 16, затем ещё раз movzx 16->32, чтобы проверить 2 младших бита).

И непонятно для какой это архитектуры, сегменты как будто плоские и 32-битные, но операционной системы не заметно.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от LightDiver

обливают друг друга лавандовым рафом

Это только вайбкодеры. Нормальные обливают пивом или кофе.

scanner
()
Ответ на: комментарий от firkax

И непонятно для какой это архитектуры, сегменты как будто плоские и 32-битные, но операционной системы не заметно.

это непосредственно загрузчику скармливается, например грабу примерно как-то так

menuentry "My Cool OS" {
    multiboot /boot/day256.elf
    boot
}

madcore ★★★★★
()
Ответ на: комментарий от cluge

cum_days dw 0, 31, 59, 90,120,151,181,212,243,273,304,334

Врачи рекомендуют всё же почаще это делать.

yorshka
()
Ответ на: комментарий от stabilitron

А у меня короче!

Во времена, раньше мерились у кого длиннее…

anc ★★★★★
()
Ответ на: комментарий от firkax

Спасибо за указание на ошибку. Вообще для практических целей век вообще можно не проверять, программа будет корректно работать до 2099 года. Прописывается в загрузчик grub. Сборка:


/* link.ld — линкер-скрипт для Multiboot-ядра day256.elf */

ENTRY(_start)

PHDRS {
    text PT_LOAD FLAGS(5);   /* R + X = 4 + 1 = 5 */
    data PT_LOAD FLAGS(6);   /* R + W = 4 + 2 = 6 */
}

SECTIONS {
    . = 1M;

    .text   : { *(.multiboot) *(.text) } :text
    .rodata : { *(.rodata) }             :text
    .data   : { *(.data) }               :data
    .bss    : { *(.bss) }                :data
}
nasm -f elf32 day256.asm -o day256.o
ld -m elf_i386 -T link.ld day256.o -o day256.elf

Быстро проверить можно с qemu:

qemu-system-i386 -kernel day256.elf
cluge
()
Последнее исправление: cluge (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему: только для зарегистрированных, score>=50.