[d | b | misc]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог] [Главная]

Файл: 1623426028141053040.png -(2447 KB, 2048x1969, 1623426028141053040.png)
2447 No.14830  
Всем привет, феи. Расскажу о себе и своей жизни. Закончил школу, колледж, университет. Долго мыкался по разным работка, но в итоге нашел себе постоянную работку. Работаю простым манером. Меня на работке более — менее все устраивает. Но хотелось бы найти место где зарплата повыше и условия получше. Сейчас интересно программирование (python), системное администрирование, маркетинг. Стоит ли распыляться на несколько сфер или сконцентрироваться на одной? Например я сейчас учу основы python и сейчас читаю книгу по маркетингу/продажам.
>> No.14831  
>python
Я не знаю, как тебе мягче объяснить, но сейчас это уже не актуально. Как говорится, one frontend language, one backend language and one database language. Еще пару скриптовых языков для замазки. И это только для того, что бы начать работать макакой, которая получает больше минималки. Кароче сейчас не лучшее время для того, что бы делать программирование основной работой. А что касается маркетинга, я лично это кроме как шуткой никогда особо не считал.
>> No.14832  
Файл: 1664128391061256.png -(356 KB, 750x749, 1664128391061256.png)
356
>>14831
Зачем вы распространяете чушь.
>> No.14837  
>>14832
А вы питонист?
>> No.14838  
>>14837
Таки да. АПВС?
>> No.14839  
Файл: 166890617628793.png -(334 KB, 1920x1966, 166890617628793.png)
334
>>14838
А ваш питон так может в одну строку? Дуэль!
>> No.14845  
>>14831
Бакости какие-то. IT есть завод XXI века, для каждого найдётся место.
>> No.14847  
Файл: 1668802522919.png -(234 KB, 700x500, 1668802522919.png)
234
>>14845
>для каждого найдётся место.
Зарплата в 6 циферок тоже найдется для каждого, как же. Но если вам нравится по 11 часов в день долбиться в текстовый редактор за смешные деньги, то пожалуйста, я же не отговариваю.
>> No.14850  
>>14839
Да, там тоже есть ;
>> No.14851  
>>14847
Смешность денег зависит от места, фирмы и позиции, а не от языка и фрони/фулл/бек.
Знать скуль пооезно, но большая часть бека на орм, а фронт на графкуль если уж действительно надо.

Опять же, из личного опыта, я вам не стаковерфлов, исследования проводить.
>> No.14857  
>>14840
И SyntaxError тоже есть. Не сбегай с кододуэли.
>> No.14860  
Файл: 102810018_p0.jpg -(410 KB, 1792x2500, 102810018_p0.jpg)
410
Да, без "крутых" библиотек сложновато. Зато хоть смотрится понятно.

import Data.List
import Magic
import System.Directory

magic = magicOpen [MagicMimeType]

getMimeType :: [FilePath] -> IO [String]
getMimeType fps = magic >>= (\m -> magicLoadDefault m >> mapM (magicFile m) fps)

groupByMime :: [FilePath] -> IO [[(FilePath, String)]]
groupByMime fps = do
mimes <- getMimeType fps
let zipped = zip fps mimes
srted = sortBy (\(_, m0) (_, m1) -> compare m0 m1) zipped
grped = groupBy (\(_, m0) (_, m1) -> m0 == m1) srted
return grped

ls :: FilePath -> IO [FilePath]
ls fp = listDirectory fp >>= (\list -> return $ map ((fp ++ "/") ++) list)

fillTo :: Int -> String -> String
fillTo n xs
| xsLen >= n = xs
| otherwise = xs ++ (replicate (n - xsLen) ' ')
where
xsLen = length xs

main =
ls "/proc" >>= groupByMime >>=
mapM_
(\list ->
let (sh, hd) = splitAt 10 list
in putStrLn (fillTo 30 "path" ++ "type") >>
mapM_ (\x -> putStrLn $ fillTo 30 (fst x) ++ (snd x)) sh >>
putStrLn (fillTo 30 (show $ length hd) ++ "omited.\n"))

>> No.14861  
Файл: 101883703_p0.jpg -(1710 KB, 6144x9216, 101883703_p0.jpg)
1710
>>14860
Ум, оно не по mime группирует, а по st_mode из lstat() https://linux.die.net/man/2/lstat
https://man7.org/linux/man-pages/man7/inode.7.html#:~:text=The file type and mode

А то все онлайн запускалки говрят что не могут Magic найти и не могу ваш код проверить. (https://ideone.com/eWAWVH)
>> No.14862  
>>14857
Вы бы хоть ссылку правильную указать потрудились. Да и кодогольф как мерило языка - занятие бесполезное.

from itertools import chain, groupby, repeat; from pathlib import Path; for p, t in chain.from_iterable([chain([("type", "path")], list(zip(repeat(x, 10), y)), [("", f"(another {len(list(y))+1})")] if next(y, None) else []) for x, y in groupby(sorted(Path('/proc').iterdir(), key=lambda x: x.lstat().st_mode), key=lambda x: x.lstat().st_mode)]): print("{!s:<30}{:<10}".format(y, x))


Дешифратор st_mode и/или использование массивов вместо итераторов оставлю для читателя. Если хочется избавиться от лишней новой строки, то тривиально оборачивается в
list(starmap(lambda x, y: ..., chain.from_iterable(...))) or None
.

Или если хочется ближе к нормальной логике операций:
format="{:<30}{:<10}"; for ftype, items in groupby(sorted(Path('/proc').iterdir(), key=lambda x: (x.lstat().st_mode, str(x))), key=x.lstat().st_mode): [print(i) for i in ([format.format("path", "type")] + [format.format(str(path), ftype) for path in (islice(items, 0, 10))] + [f"(another {len(list(items))+1})\n" if next(items, False) else ""])] and None


chain()
в первом только на случай UB.
А теперь жду вашу версию без ;.
>> No.14863  
>>14861
https://hackage.haskell.org/package/magic
Можно эту функцию переписать через
https://hackage.haskell.org/package/unix-2.8.0.0/docs/System-Posix-Files.html#t:FileStatus
если уж lstat.
>> No.14864  
Файл: 102728148_p0.jpg -(887 KB, 1320x2014, 102728148_p0.jpg)
887
В общѣмъ, если дополнить нѣхватку стандартныхъ библитѣкъ своими функциями, то получается куда более лаконичная вѣрсия, чѣмъ в этом вашѣмъ питоне. А в одну строку не помѣщается потому только, что мне в своѣмъ Vim-e лѣнь вырубать hindent.

import Data.List
import System.Directory
import System.Posix.Files as PF
import Text.Printf

data StMode
= BlkDev
| CharDev
| Dir
| NamedPipe
| RegFile
| Sock
| SymLink
deriving (Eq, Ord)

instance Show StMode where
show BlkDev = "block device"
show CharDev = "character device"
show Dir = "directory"
show NamedPipe = "named pipe"
show RegFile = "regular file"
show Sock = "socket"
show SymLink = "symbolic link"

getStMode :: FilePath -> IO StMode
getStMode fp =
getFileStatus fp >>=
(\x ->
case () of
_
| isBlockDevice x -> return BlkDev
| isCharacterDevice x -> return CharDev
| isNamedPipe x -> return NamedPipe
| isRegularFile x -> return RegFile
| isDirectory x -> return Dir
| PF.isSymbolicLink x -> return SymLink
| isSocket x -> return Sock)

groupByStMode :: [FilePath] -> IO [[(FilePath, StMode)]]
groupByStMode fps = do
stModes <- mapM getStMode fps
let zipped = zip fps stModes
sorted = sortBy (\(_, m0) (_, m1) -> compare m0 m1) zipped
grouped = groupBy (\(_, m0) (_, m1) -> m0 == m1) sorted
return grouped

ls :: FilePath -> IO [FilePath]
ls fp = listDirectory fp >>= (\list -> return $ map ((fp ++ "/") ++) list)

main =
ls "/dev" >>= groupByStMode >>=
mapM_
(\list ->
let (toShow, toHide) = splitAt 10 list
in printf "%-30s%s\n" "path" "type" >>
mapM_ (\x -> printf "%-30s%s\n" (fst x) (show $ snd x)) toShow >>
printf "%-30s%s" (show $ length toHide) "omited\n\n")

>> No.14865  
>>14864
Ахъ да! Главное – лаконичность эта достигаѣться не путем страшныхъ извращѣний, а путем вполне естѣстественнымъ, что непрѣменно говорит о преимуществе даннаго языка!
>> No.14866  
>>14864
>1/3 задания не учтена, сайд-эффекты
>лаконичность
>страшныхъ извращѣний
>использует буквально то же самое
What did he mean by this?
>> No.14867  
Файл: 1664234225942785.png -(219 KB, 500x500, 1664234225942785.png)
219
>>14866
Лол.
>> No.14868  
Файл: __kagiyama_hina_touhou_drawn_by_chamaji__56940e7c6.jpg -(57 KB, 500x500, __kagiyama_hina_touhou_drawn_by_chamaji__56940e7c6.jpg)
57
>>14867
>вваливается в тред советов с ахинеей, галопирует с какими-то своими дуэлями
>выигрывает по каким-то лично придуманным правилам
>get out
Apply yourself.
>> No.14869  
Одна девочка, глядя на это всё, уже коньяк ополовинила. Страшно.
>> No.14871  
>>14869
Учитывая обычный размер бутылок коньяка, девочке предстоит весёлые вечер, ночь и утро.
>> No.14877  
Файл: 706c36b2caf942900362e37cf3d23aba.webp -(33 KB, 314x286, 706c36b2caf942900362e37cf3d23aba.webp)
33
BUZZ!
#include <dirent.h>

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

const char *types[] = { "unknown", "named pipe", "character device", "", "directory", "", "block device", "", "regular file",
"", "link", "", "socket", "", "whiteout", ""};

long main(size_t argc, char **argv){
const char *arg = argc > 1 ? argv[1] : ".";
size_t arglen = strlen(arg);
char names[16][16][256];
static size_t last[16];
DIR *parent = opendir(arg);
if(!parent)
return -1;
for(struct dirent *c = readdir(parent); c; c = readdir(parent)){
if(!strcmp(c->d_name, ".") || !strcmp(c->d_name, ".."))
continue;
if(last[c->d_type] < 16)
strcpy(names[c->d_type][last[c->d_type]], c->d_name);
last[c->d_type]++;
}

for(size_t i = 0, ever_printed = 0; i < 16; i++){
if(last[i] == 0)
continue;
if(ever_printed)
printf("\n");
else
ever_printed = 1;
printf("%-*s %s\n", arglen + strlen("/") + 32, "path", "type");
for(size_t j = 0; j < (last[i] > 16 ? 16 : last[i]); j++)
printf("%s/%-32.32s %s (%lu)\n", arg, names[i][j], types[i], last[i]);
if(last[i] > 16)
printf("(other %lu)\n", last[i] - 16);
}
}

Не могу удержаться.
>> No.14878  
Файл: 16690734842256.png -(432 KB, 1920x2765, 16690734842256.png)
432
>>14862
Ссылку на что?
Можете не поверить, но мой изначальный поинт, который я хотел продемонстрировать, был о трудности использования python для быстрых однострочников в шелле в качестве замены shell-скриптингу.
Необходимость прыгать повсюду для того же
> оборачивается
везде, когда в ruby можно просто chain-ить.

> А теперь жду вашу версию без ;
Pathname('/proc/').children.group_by(&:ftype).each{ |type, files| files.first(10).each_with_index{ |file, index| lambda{ |file, type| "%-30s%-10s" % [file, type] }.tap{ |printer| if index.zero? then puts printer.call("path", "type") end or puts printer.call(file, "%s (%s)" % [type, files.size]) } } and (files.size - 10).tap{ |remain| if remain > 0 then puts "(another #{remain})\n\n" else puts end } }

https://ideone.com/azO7gu
https://ideone.com/8eX05Q

И я не могу запустить вашу штуку: https://ideone.com/J8jwkG В чём дело?

>>14864
Оно запускается, отлично.
https://ideone.com/eaO3aE

Правда про /proc/self почему-то говорит, что директория.
>> No.14879  
Файл: c1a6b7f72b7fec2b1da975aa88025dd0.jpg -(257 KB, 985x1105, c1a6b7f72b7fec2b1da975aa88025dd0.jpg)
257
>>14877
П - Продуктивность.
>> No.14881  
>>14868
Кто-то слил разрозненных постеров в одну колыхающуюся угрожающую массу. Не стоит так делать.
>> No.14897  
>forced anon
Tsk.

>>14878
Excusez moi, не проверил финальную версию перед копипастом.
https://ideone.com/lZJcN7
https://ideone.com/YSMXkt
>мой изначальный поинт, который я хотел продемонстрировать, был о трудности использования python для быстрых однострочников в шелле
И он нифига не очевидный, особенно когда вы даёте скриншот IDE, а не консольки. Плюс, умещение скриптов в одну строку никогда на самом деле не было чем-то необходимым, когда есть HEREDOC или возможность просто создать файл, а не дебажить длинностроку на живом.
В любом случае, для шеооскриптов ничего лучше Перла не придумали.

>>14877
А return 0 кот будет делать? И почему long? И NAME_MAX может быть больше 256.

>>14881
Есть ли разница, в треде всё равно балаган, и выцеплаять только кого-то одного - такое себе,
>> No.14898  
>>14897
>Есть ли разница, в треде всё равно балаган, и выцеплаять только кого-то одного - такое себе
Поэтому нужно обгадить всех кислыми фразами с зарубежных имиджбордов. Это именно тот Ойчан, который мы все хотим видеть. Отлично. Продожайте.
>> No.14899  
>>14898
"Кислость" у вас в голове. Вот что мешало на вопрос нормально ответить вместо перехода на нападки, м?
>> No.14900  
Файл: 3c6431c5a8576736d07c66ded23d7dc42b98f5be.jpg -(230 KB, 807x1082, 3c6431c5a8576736d07c66ded23d7dc42b98f5be.jpg)
230
>>14899
Вы разговариете сами с собой. К сожалению здесь. Поэтому берите свою кислость и идите. Вот эта девочка вам уже и транспорт подготовила.
>> No.14902  
>>14878
>Правда про /proc/self почему-то говорит, что директория.
man 5 proc
>When a process accesses this magic symbolic link, it resolves to the process's own /proc/[pid] directory
>> No.14903  
>>14897
> В любом случае, для шеооскриптов ничего лучше Перла не придумали.
Ruby наследник perl. Там даже похожие predefined globals и sed mode в интерпретаторе.
https://ruby-doc.org/core-2.0.0/doc/globals_rdoc.html

CPAN перла живой? Что там с Raku?
https://en.wikipedia.org/wiki/Raku_(programming_language)
> Influenced by
> Ruby
>> No.14904  
>>14902
Но до резолвинга оно всё-таки ссылка.
>> No.14906  
>>14903
>Ruby наследник perl
Так и PHP наследник perl, и Питон. Плюс в основной поставке системы он не идёт, в отличие от.
>CPAN перла живой?
А что ему сделается? https://metacpan.org/
>Что там с Raku?
Оффициально открестились года вроде два назад, не слежу.
>> No.14907  
>>14904
https://hackage.haskell.org/package/unix-2.8.0.0/docs/System-Posix-Files.html
getFileStatus вызывает stat(2), который резолвит ссылки.
Надо было getSymbolicLinkStatus использовать, он lstat(2) вызывает. Моя ошибка.
https://ideone.com/EUnE8Z



[d | b | misc]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог] [Главная]