home.social

#stdin — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #stdin, aggregated by home.social.

  1. stdin, stdout und stderr –Standarddatenströme von Linux-Prozessen

    Wenn du mit der Bash-Shell interagierst brauchst du ein solides Vertändnis von stdin, stdout und stderr, sie bilden die Standardein- und Ausgaben auf Linux-Systemen. An sich ist jede art von Programm dafür gedacht Daten zu empfangen diese auf spezifische Art und Weise zu verarbeiten und nach der Verarbeitung auszugeben. Das lenken der Datenflüsse kann genau mit diesem Verständnis bewusst tun. Was ist stdin? stdin steht für Standard Input und repräsentiert den Eingabestrom eines jeden […]

    andreas-moor.de/stdin-stdout-u

  2. Файловые дескрипторы 0, 1, 2: полное руководство по работе с потоками

    Привет, Хабр! Конструкции вроде 2>&1 и &> встречаются повсюду — в мануалах, скриптах, инструкциях. Их используют постоянно, но редко понимают до конца. Почему ошибки продолжают появляться в терминале, хотя, казалось бы, должны уходить в файл? Почему конвейер передаёт только часть вывода? В статье разберём всё от базового синтаксиса до работы с tee и /dev/null - каждая часть будет разобрана и показана на практических примерах.

    habr.com/ru/articles/960564/

    #linux #stdin #stdout #stderr #bash #tee

  3. Файловые дескрипторы 0, 1, 2: полное руководство по работе с потоками

    Привет, Хабр! Конструкции вроде 2>&1 и &> встречаются повсюду — в мануалах, скриптах, инструкциях. Их используют постоянно, но редко понимают до конца. Почему ошибки продолжают появляться в терминале, хотя, казалось бы, должны уходить в файл? Почему конвейер передаёт только часть вывода? В статье разберём всё от базового синтаксиса до работы с tee и /dev/null - каждая часть будет разобрана и показана на практических примерах.

    habr.com/ru/articles/960564/

    #linux #stdin #stdout #stderr #bash #tee

  4. Файловые дескрипторы 0, 1, 2: полное руководство по работе с потоками

    Привет, Хабр! Конструкции вроде 2>&1 и &> встречаются повсюду — в мануалах, скриптах, инструкциях. Их используют постоянно, но редко понимают до конца. Почему ошибки продолжают появляться в терминале, хотя, казалось бы, должны уходить в файл? Почему конвейер передаёт только часть вывода? В статье разберём всё от базового синтаксиса до работы с tee и /dev/null - каждая часть будет разобрана и показана на практических примерах.

    habr.com/ru/articles/960564/

    #linux #stdin #stdout #stderr #bash #tee

  5. Файловые дескрипторы 0, 1, 2: полное руководство по работе с потоками

    Привет, Хабр! Конструкции вроде 2>&1 и &> встречаются повсюду — в мануалах, скриптах, инструкциях. Их используют постоянно, но редко понимают до конца. Почему ошибки продолжают появляться в терминале, хотя, казалось бы, должны уходить в файл? Почему конвейер передаёт только часть вывода? В статье разберём всё от базового синтаксиса до работы с tee и /dev/null - каждая часть будет разобрана и показана на практических примерах.

    habr.com/ru/articles/960564/

    #linux #stdin #stdout #stderr #bash #tee

  6. Управляем потоками в Linux: от stdin до stderr

    Привет, Хабр! Сегодня рассмотрим работу с потоками в Linux: stdin, stdout, stderr и, конечно, все эти оператора редиректа.

    habr.com/ru/companies/otus/art

    #linux #stdin #stderr #разработка #bash

  7. Custom parser, an unholly aliance of #roff and #markdown for #batch processing from #stdin more or less works!

    Time to up the game 😼

  8. CW: Друга програма на Haskell

    Зазвичай друга програма кожного програміста який починає вивчати мову програмування це hello {name}.

    Спочатку треба трохи розʼяснити про ghc, ghci і функцію main.

    • ghc - це компілятор мови програмування Haskell.

    • ghci - це інтерпретатор мови програмування.

    • функція main - це головна функція яка автоматично викликається при запуску бінарного файлу зібраного за допомогою ghc. Вона не обовʼязкова для запуску в режимі інтерпретації.

    • У функціональних мовах, до яких належить Haskell, немає змінних. Є тільки функції та константи. Константа це функція яка повертає завжди одне значення не залежачи від жодних обставин.

    • Всі файли з джерельним кодом називаються модулями. Є спеціальне оголошення модулів, але про це пізніше.

    • Також є різниця між написанням коду в файлі й виконанням в інтерактивному режимі інтерпретатора. В інтерпретаторі ми можемо виконати будь-яку інструкцію, наприклад putStrLn "Hi!", а в модулі ні. У модулі можна тільки створювати функції.

    • Однорядкові коментарі починаються з двох мінусів -- Comment.

    Тепер перейдемо до нашої програми. У єдиній попередній нашій функції в нас була одна команда. Виклик функції putStrLn з передаванням аргументу. Тепер нам потрібно вписати кілька команд, і щоб це зробити потрібно використати ключове слово do. Після нього можна вписати кілька команд розділені ;, або новим рядком. Але кожний новий рядок повинен починатися з певного відступу. Відступ може бути або пробілом, або табуляцією. Кількість символів може бути різною, але кожний наступний рядок повинен мати, або ту ж кількість пробілів, або більше. Якщо буде менше, то це вважатиметься новим оголошенням. Також один символ табуляції буде розглядатись як вісім пробілів, не залежно від налаштувань редактора.

    main = do
      putStr "Введіть ваше ім'я: " -- Вивід тексту в stdout
      name <- getLine -- зчитування з клавіатури одного рядка з stdin
      putStrLn ("Привіт, " ++ name ++ "!") -- Вивід привітання в stdout
    

    Оператор ++ обʼєднує рядки в один. У інших мовах для цього використовується оператор, який складається з одного символу +.

    Все було б добре, якби не одна проблема. Коли ми запустимо цю програму, то отримаємо не зовсім очікуваний результат.

    Мертвий Демон
    Введіть ваше ім'я: Привіт, Мертвий Демон!
    

    Ця програма спочатку буде очікувати на ввід, а потім виведе на екран весь текст. Це відбувається через буферизацію. Вивід відбувається при вписуванні символу нового рядка. Але ми можемо змусити його вивести тоді коли нам це потрібно. Ця функція називається flush. У Haskell вона знаходиться у модулі System.IO, який нам потрібно імпортувати.

    import System.IO
    
    main = do
      putStr "Введіть ваше ім'я: "
      hFlush stdout
      name <- getLine
      putStrLn ("Привіт, " ++ name ++ "!")
    

    Ця програма буде працювати вірно.

    #haskell #hello-name #programing #програмування #друга #програма #stdout #stdin #функції #вивід #ввід #екран #клавіатура #зчитування #flush

  9. CW: Друга програма на Haskell

    Зазвичай друга програма кожного програміста який починає вивчати мову програмування це hello {name}.

    Спочатку треба трохи розʼяснити про ghc, ghci і функцію main.

    • ghc - це компілятор мови програмування Haskell.

    • ghci - це інтерпретатор мови програмування.

    • функція main - це головна функція яка автоматично викликається при запуску бінарного файлу зібраного за допомогою ghc. Вона не обовʼязкова для запуску в режимі інтерпретації.

    • У функціональних мовах, до яких належить Haskell, немає змінних. Є тільки функції та константи. Константа це функція яка повертає завжди одне значення не залежачи від жодних обставин.

    • Всі файли з джерельним кодом називаються модулями. Є спеціальне оголошення модулів, але про це пізніше.

    • Також є різниця між написанням коду в файлі й виконанням в інтерактивному режимі інтерпретатора. В інтерпретаторі ми можемо виконати будь-яку інструкцію, наприклад putStrLn "Hi!", а в модулі ні. У модулі можна тільки створювати функції.

    • Однорядкові коментарі починаються з двох мінусів -- Comment.

    Тепер перейдемо до нашої програми. У єдиній попередній нашій функції в нас була одна команда. Виклик функції putStrLn з передаванням аргументу. Тепер нам потрібно вписати кілька команд, і щоб це зробити потрібно використати ключове слово do. Після нього можна вписати кілька команд розділені ;, або новим рядком. Але кожний новий рядок повинен починатися з певного відступу. Відступ може бути або пробілом, або табуляцією. Кількість символів може бути різною, але кожний наступний рядок повинен мати, або ту ж кількість пробілів, або більше. Якщо буде менше, то це вважатиметься новим оголошенням. Також один символ табуляції буде розглядатись як вісім пробілів, не залежно від налаштувань редактора.

    main = do
      putStr "Введіть ваше ім'я: " -- Вивід тексту в stdout
      name <- getLine -- зчитування з клавіатури одного рядка з stdin
      putStrLn ("Привіт, " ++ name ++ "!") -- Вивід привітання в stdout
    

    Оператор ++ обʼєднує рядки в один. У інших мовах для цього використовується оператор, який складається з одного символу +.

    Все було б добре, якби не одна проблема. Коли ми запустимо цю програму, то отримаємо не зовсім очікуваний результат.

    Мертвий Демон
    Введіть ваше ім'я: Привіт, Мертвий Демон!
    

    Ця програма спочатку буде очікувати на ввід, а потім виведе на екран весь текст. Це відбувається через буферизацію. Вивід відбувається при вписуванні символу нового рядка. Але ми можемо змусити його вивести тоді коли нам це потрібно. Ця функція називається flush. У Haskell вона знаходиться у модулі System.IO, який нам потрібно імпортувати.

    import System.IO
    
    main = do
      putStr "Введіть ваше ім'я: "
      hFlush stdout
      name <- getLine
      putStrLn ("Привіт, " ++ name ++ "!")
    

    Ця програма буде працювати вірно.

    #haskell #hello-name #programing #програмування #друга #програма #stdout #stdin #функції #вивід #ввід #екран #клавіатура #зчитування #flush

  10. CW: Друга програма на Haskell

    Зазвичай друга програма кожного програміста який починає вивчати мову програмування це hello {name}.

    Спочатку треба трохи розʼяснити про ghc, ghci і функцію main.

    • ghc - це компілятор мови програмування Haskell.

    • ghci - це інтерпретатор мови програмування.

    • функція main - це головна функція яка автоматично викликається при запуску бінарного файлу зібраного за допомогою ghc. Вона не обовʼязкова для запуску в режимі інтерпретації.

    • У функціональних мовах, до яких належить Haskell, немає змінних. Є тільки функції та константи. Константа це функція яка повертає завжди одне значення не залежачи від жодних обставин.

    • Всі файли з джерельним кодом називаються модулями. Є спеціальне оголошення модулів, але про це пізніше.

    • Також є різниця між написанням коду в файлі й виконанням в інтерактивному режимі інтерпретатора. В інтерпретаторі ми можемо виконати будь-яку інструкцію, наприклад putStrLn "Hi!", а в модулі ні. У модулі можна тільки створювати функції.

    • Однорядкові коментарі починаються з двох мінусів -- Comment.

    Тепер перейдемо до нашої програми. У єдиній попередній нашій функції в нас була одна команда. Виклик функції putStrLn з передаванням аргументу. Тепер нам потрібно вписати кілька команд, і щоб це зробити потрібно використати ключове слово do. Після нього можна вписати кілька команд розділені ;, або новим рядком. Але кожний новий рядок повинен починатися з певного відступу. Відступ може бути або пробілом, або табуляцією. Кількість символів може бути різною, але кожний наступний рядок повинен мати, або ту ж кількість пробілів, або більше. Якщо буде менше, то це вважатиметься новим оголошенням. Також один символ табуляції буде розглядатись як вісім пробілів, не залежно від налаштувань редактора.

    main = do
      putStr "Введіть ваше ім'я: " -- Вивід тексту в stdout
      name <- getLine -- зчитування з клавіатури одного рядка з stdin
      putStrLn ("Привіт, " ++ name ++ "!") -- Вивід привітання в stdout
    

    Оператор ++ обʼєднує рядки в один. У інших мовах для цього використовується оператор, який складається з одного символу +.

    Все було б добре, якби не одна проблема. Коли ми запустимо цю програму, то отримаємо не зовсім очікуваний результат.

    Мертвий Демон
    Введіть ваше ім'я: Привіт, Мертвий Демон!
    

    Ця програма спочатку буде очікувати на ввід, а потім виведе на екран весь текст. Це відбувається через буферизацію. Вивід відбувається при вписуванні символу нового рядка. Але ми можемо змусити його вивести тоді коли нам це потрібно. Ця функція називається flush. У Haskell вона знаходиться у модулі System.IO, який нам потрібно імпортувати.

    import System.IO
    
    main = do
      putStr "Введіть ваше ім'я: "
      hFlush stdout
      name <- getLine
      putStrLn ("Привіт, " ++ name ++ "!")
    

    Ця програма буде працювати вірно.

    #haskell #hello-name #programing #програмування #друга #програма #stdout #stdin #функції #вивід #ввід #екран #клавіатура #зчитування #flush

  11. Wrote this hello world app last few minutes, just smart enough to draw and exit on right click. Just uses output same as the and implementations (setq x "Fo 0 999 3\nF 0 255\nL$ 0 0 800\"Hello world\"\nZ \n")
    (while (setq p (asc (fgets stdin))) (cond ((== p 100) (write 1 x (strlen x))) ((== p 51) (exit 0)))) This code is out on bitbucket timcdoc antibrowser lisp hello (sub C or bash for lisp to see others)

  12. Wrote this #lisp hello world #gui #cloud app last few minutes, just smart enough to draw and exit on right click. Just uses #stdin #stdout output same as the #bash and #C implementations (setq x "Fo 0 999 3\nF 0 255\nL$ 0 0 800\"Hello world\"\nZ \n")
    (while (setq p (asc (fgets stdin))) (cond ((== p 100) (write 1 x (strlen x))) ((== p 51) (exit 0)))) This code is out on bitbucket timcdoc antibrowser lisp hello (sub C or bash for lisp to see others)

  13. Wrote this #lisp hello world #gui #cloud app last few minutes, just smart enough to draw and exit on right click. Just uses #stdin #stdout output same as the #bash and #C implementations (setq x "Fo 0 999 3\nF 0 255\nL$ 0 0 800\"Hello world\"\nZ \n")
    (while (setq p (asc (fgets stdin))) (cond ((== p 100) (write 1 x (strlen x))) ((== p 51) (exit 0)))) This code is out on bitbucket timcdoc antibrowser lisp hello (sub C or bash for lisp to see others)

  14. Wrote this #lisp hello world #gui #cloud app last few minutes, just smart enough to draw and exit on right click. Just uses #stdin #stdout output same as the #bash and #C implementations (setq x "Fo 0 999 3\nF 0 255\nL$ 0 0 800\"Hello world\"\nZ \n")
    (while (setq p (asc (fgets stdin))) (cond ((== p 100) (write 1 x (strlen x))) ((== p 51) (exit 0)))) This code is out on bitbucket timcdoc antibrowser lisp hello (sub C or bash for lisp to see others)

  15. Wrote this #lisp hello world #gui #cloud app last few minutes, just smart enough to draw and exit on right click. Just uses #stdin #stdout output same as the #bash and #C implementations (setq x "Fo 0 999 3\nF 0 255\nL$ 0 0 800\"Hello world\"\nZ \n")
    (while (setq p (asc (fgets stdin))) (cond ((== p 100) (write 1 x (strlen x))) ((== p 51) (exit 0)))) This code is out on bitbucket timcdoc antibrowser lisp hello (sub C or bash for lisp to see others)

  16. Graphing part is working, just hard coded fns for now, but it's a start! [[oh code, my lisp, ancient variant, out on bitbucket.org/timcdoc/antibrow