What is Hackers' Pub?

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

A couple of weeks ago, someone emailed me some personal files and videos I have forgotten I have left somewhere on my VPS.

In this video I'll show a common tool for finding these files: ffuf

youtu.be/sdfCxvp6rCs

0
0
0

The Raspberry Pi 4 is briefly joining me at work, just to rule out performance issues from my home network.

Still using relayd (OpenBSD) on VPS via Wireguard tunnel to apache24 (FreeBSD) on Raspberry Pi 4.

Ping from Pi to VPS through tunnel is a steady 18 ms. Same from VPS to Pi.

Running ab -n 1000 -c 10:

Concurrency Level: 10
Time taken for tests: 78.013 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 763000 bytes
HTML transferred: 317000 bytes
Requests per second: 12.82 [#/sec] (mean)
Time per request: 780.134 [ms] (mean)
Time per request: 78.013 [ms] (mean, across all concurrent requests)
Transfer rate: 9.55 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 138 358 135.5 336 1389
Processing: 271 412 68.0 418 809
Waiting: 269 366 60.2 363 662
Total: 472 770 150.8 745 1780

Percentage of the requests served within a certain time (ms)
50% 745
66% 798
75% 832
80% 861
90% 923
95% 993
98% 1121
99% 1461
100% 1780 (longest request)

0

The Raspberry Pi 4 is briefly joining me at work, just to rule out performance issues from my home network.

Still using relayd (OpenBSD) on VPS via Wireguard tunnel to apache24 (FreeBSD) on Raspberry Pi 4.

Ping from Pi to VPS through tunnel is a steady 18 ms. Same from VPS to Pi.

Running ab -n 1000 -c 10:

Concurrency Level: 10
Time taken for tests: 78.013 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 763000 bytes
HTML transferred: 317000 bytes
Requests per second: 12.82 [#/sec] (mean)
Time per request: 780.134 [ms] (mean)
Time per request: 78.013 [ms] (mean, across all concurrent requests)
Transfer rate: 9.55 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 138 358 135.5 336 1389
Processing: 271 412 68.0 418 809
Waiting: 269 366 60.2 363 662
Total: 472 770 150.8 745 1780

Percentage of the requests served within a certain time (ms)
50% 745
66% 798
75% 832
80% 861
90% 923
95% 993
98% 1121
99% 1461
100% 1780 (longest request)

For comparison, this is when connecting directly to apache24 on the Pi from a laptop on the same network:

Concurrency Level: 10
Time taken for tests: 1.309 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 292000 bytes
HTML transferred: 45000 bytes
Requests per second: 764.03 [#/sec] (mean)
Time per request: 13.089 [ms] (mean)
Time per request: 1.309 [ms] (mean, across all concurrent requests)
Transfer rate: 217.87 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 6 64.4 2 1030
Processing: 1 2 0.5 2 9
Waiting: 1 2 0.4 2 7
Total: 3 8 64.4 4 1032

Percentage of the requests served within a certain time (ms)
50% 4
66% 5
75% 5
80% 5
90% 5
95% 5
98% 6
99% 6
100% 1032 (longest request)

0
0
0

Would be great to have a man pager that can :

- access easily to a section of the page (like DESCRIPTION)
- link-ify the refs to another man page (like dircolors(1) )

afaik, neovim has a toc split, not does not linkify the references.

do you know of any pager having these features ?

0
0
0
0
0
0

folks, what's your take on this UI pattern that's quite common on social platforms:

A button with a verb label (e.g. "Follow") that, after the button was pressed, changes to an adjective describing the status (e.g. "Following"), rather than being explicit about the action it'll perform when pressed again (e.g. "Unfollow").

Do you find this problematic in practice?

Screenshot from Instagram showing a list of accounts with a Follow button in each row. Some of the buttons are de-emphasized and say "Following". The account names and avatars are blurred out for privacy.
0
0
0
1
0
0

folks, what's your take on this UI pattern that's quite common on social platforms:

A button with a verb label (e.g. "Follow") that, after the button was pressed, changes to an adjective describing the status (e.g. "Following"), rather than being explicit about the action it'll perform when pressed again (e.g. "Unfollow").

Do you find this problematic in practice?

Screenshot from Instagram showing a list of accounts with a Follow button in each row. Some of the buttons are de-emphasized and say "Following". The account names and avatars are blurred out for privacy.
0
0
1
0
0
2

folks, what's your take on this UI pattern that's quite common on social platforms:

A button with a verb label (e.g. "Follow") that, after the button was pressed, changes to an adjective describing the status (e.g. "Following"), rather than being explicit about the action it'll perform when pressed again (e.g. "Unfollow").

Do you find this problematic in practice?

Screenshot from Instagram showing a list of accounts with a Follow button in each row. Some of the buttons are de-emphasized and say "Following". The account names and avatars are blurred out for privacy.
0
0
0
2
2
0

부산 사상구 "극우SNS 양궁선수 계약 해지, 협회 징계보고 결정"
(부산=연합뉴스) 손형주 기자 = 지난 대통령 선거 결과가 조작됐다는 극우 성향의 게시물을 SNS에 반복적으로 올려 논란을 일으킨 양궁 국가대표...
yna.co.kr/view/AKR202508211492

0
0

부산 사상구 "극우SNS 양궁선수 계약 해지, 협회 징계보고 결정"
(부산=연합뉴스) 손형주 기자 = 지난 대통령 선거 결과가 조작됐다는 극우 성향의 게시물을 SNS에 반복적으로 올려 논란을 일으킨 양궁 국가대표...
yna.co.kr/view/AKR202508211492

0

이찬행 shared the below article:

Optique: CLI 파서 컴비네이터

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

이 글에서는 Haskell의 `optparse-applicative`와 TypeScript의 Zod에서 영감을 받아 제작된 새로운 CLI 파서 라이브러리인 Optique를 소개합니다. Optique는 파서 컴비네이터를 활용하여 CLI의 구조를 레고 블록처럼 조립할 수 있게 해줍니다. `option()`, `optional()`, `multiple()`, `or()`, `object()`, `constant()`, `command()`, `argument()` 등의 다양한 파서와 컴비네이터를 통해 복잡한 CLI 구조를 유연하게 정의할 수 있습니다. 특히, `or()`와 `object()` 컴비네이터를 사용하여 상호 배타적인 옵션이나 서브커맨드를 쉽게 구현하는 방법을 예제를 통해 설명합니다. Optique는 단순한 CLI 파서 역할에 집중하고 있어 모든 기능을 제공하지는 않지만, 복잡한 CLI 구조를 표현하는 데 유용하며, 소개 문서와 튜토리얼을 통해 더 자세한 내용을 확인할 수 있습니다.

Read more →
12
2
2
0

제 추측인데 현재 자금시장 돌아가는 걸 보면
대한항공 / 진에어 빼면
제주항공도 환율-무안공항 여파로 몇 년 버티기 어려울 것으로 보입니다. 모회사인 AK가 버텨줘도 회복이 쉽지 않을 것 같습니다.
이스타/티웨이도 몇년간 부침을 겪을 예정이고
결국 대한항공/진에어의 사실상 과점 형태가 되지 않을까? 하는 우려를 하고 있습니다.
그래서 더 격렬히 해외 항공사를..

0
1
0
0
0
1
0
0
0
1
1

I've recently been working on Optique, a CLI parser combinator for TypeScript. Optique allows you to describe complex CLIs by combining smaller parts. You can also handle the CLI parsing results in a type-safe manner (see code below). The idea came from Haskell's optparse-applicative, but since TypeScript's API style is so different from Haskell's, I referenced Zod and similar libraries for the API design. For a more detailed introduction, please refer to the article I posted on Hackers' Pub!

const parser = or(
  object({
    type: constant("network"),
    host: option(
      "-h", "--host",
      string({ metavar: "HOST" }),
    ),
    port: option(
      "-p", "--port",
      integer({ metavar: "PORT", min: 0, max: 65535 }),
    ),
  }),
  object({
    type: constant("local"),
    file: option(
      "-s", "--socket-file",
      string({ metavar: "FILE" }),
    ),
  }),
)

type Result = InferValue<typeof parser>;

// The above type is inferred as:
type Result = {
    readonly type: "network";
    readonly host: string;
    readonly port: number;
} | {
    readonly type: "local";
    readonly file: string;
}
2

4주 전에 주간신초의 컬럼에서 자이니치 혐오발언이 실려 논란이 되고 특히 여러 작가들이 공개적으로 비판 성명을 했었는데, 드디어 문제의 컬럼이 폐지되었다고. digital.asahi.com/articles/AST
해당 컬럼은 과거에도 여러 차례 차별 발언이 있었지만 별 문제 없이 연재가 이어져 왔는데, 이번에는 집단 성명으로 공론화가 되어 언론에도 실리게 되어서 그냥 넘어가지 못한 것 같다.

0
2
1
0