V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ahu  ›  全部回复第 3 页 / 共 36 页
回复总数  715
1  2  3  4  5  6  7  8  9  10 ... 36  
220 天前
回复了 q727729853 创建的主题 问与答 你们都用什么听歌软件?
我的音乐全家桶(软件类)介绍:

1 、在线听:首选 [汽水音乐] 主打一个随机听,次选 [网易云音乐] 偶尔搜听一些特定的流行口水歌(其实汽水也能搜),已卸载 QQ 音乐,以前曾是会员,现在觉得它太没品了,直接全平台干掉了;最近增加了 [Spotify] ,这才是云音乐该有的样子,所以要支持一下

2 、本地听:首选 [Roon] ,次选 [Vox] 。辅助 HQPlayer4Desktop 、Pine 和 Last.fm 以及自研 [roon-extension-librefm]( https://github.com/ahu/roon-extension-librefm) ( Roon extension for posting playing status to libre.fm

作为音乐 fans ,还有一些硬件产品,主题无关就不分享了。
升级 u6 啊,美国官网貌似 u7 都有了
terminal-notifier ?
227 天前
回复了 ahu 创建的主题 随想 观 @jason5ng32 喜提 Github Starstruck 徽章有感
投资的事儿我没有发言权,分享这个也不是想构成任何投资建议哈。我只是想说,我这位朋友这么小小年纪就敢模仿大佬说干就干,闯劲可嘉。

这就像阿禅一样,他作为一个完全不懂代码的人,在这么短时间内就获得了这样一个成绩,如果没有闯劲是不可能的。

准确说,是天赋+敢想+敢干。

天赋是对产品需求的敏锐和准确把控,虽然像#1 #2 说的那样,这个成绩还不算啥 —— 但实话讲,我们很多专业的"码工"都不见得能做到,起码我没做到吧 —— 所以值得我佩服。

敢想敢干,重点都在“敢”这个字上。我们搞技术的人,很多人都比较保守。所以虽然技艺精湛,但往往不敢想不敢干。

就说这些吧。不构成任何建议哈,我自己的随想而已。
227 天前
回复了 ahu 创建的主题 随想 观 @jason5ng32 喜提 Github Starstruck 徽章有感
@jason5ng32 #6 有一个好媳妇,也很重要 😁
227 天前
回复了 jason5ng32 创建的主题 程序员 获得了 GitHub 的 4096 满级星星徽章
再次恭喜 @jason5ng32

/t/1033163 我的一点感想
231 天前
回复了 ahu 创建的主题 Telegram 真的是宁可错杀三千,也不放过一个啊
鄙人似乎运气还行,昨天晚上被封后写了个 support 就睡了。刚才尝试登录,竟然可以了
236 天前
回复了 Zeroo07 创建的主题 macOS 求推荐 Mac 上好用的本地音乐播放器
玩 HIFI 的话,楼主要不试试
1 、roon
2 、HQPlayer
3 、Audirvāna
236 天前
回复了 hugetimors 创建的主题 程序员 搞了一年的独立开发,累了!
加油!且行且珍惜
@ibuki233 #10 感谢!
我之前搜过,竟然没搜到。可能是近期刚有的
国内用汽水是不是就可以了😌
@Puteulanus #6 不错的示范 😄

于是我照猫画虎,经过约 5 轮的对话,免费的 GPT 3.5 为我写了个能 work 的 PHP 版本:

```
<?php
// 指定域名
$targetDomain = 'somename.com';

// 响应 IP 地址
$responseIP = '1.2.4.8';

// 启动 DNS 服务器
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '127.0.0.1', 5345);

echo "DNS 服务器已启动...\n";

while (true) {
socket_recvfrom($socket, $data, 512, 0, $from, $port);

// 解析 DNS 请求
$dnsRequest = dns_parse_message($data);

// 打印收到的 DNS 请求
echo "收到 DNS 请求:\n";
print_r($dnsRequest);

// 检查请求是否为 A 记录且为目标域名的子域名
if ($dnsRequest && isset($dnsRequest['question'][0]['qtype']) && $dnsRequest['question'][0]['qtype'] == 0 && endsWith($dnsRequest['question'][0]['qname'], ".$targetDomain")) {
// 构建响应数据
$dnsResponse = dns_build_response($dnsRequest, $responseIP);

// 打印响应数据
echo "准备发送的 DNS 响应:\n";
print_r($dnsResponse);

// 发送响应
$bytesSent = socket_sendto($socket, $dnsResponse, strlen($dnsResponse), 0, $from, $port);
if ($bytesSent === false) {
echo "发送 DNS 响应失败\n";
} else {
echo "已发送 $bytesSent 字节的 DNS 响应\n";
}

echo "已响应 DNS 请求:{$dnsRequest['question'][0]['qname']} -> $responseIP\n";
}
}

// 解析 DNS 请求
function dns_parse_message($data)
{
$dnsHeader = unpack('nid/nflags/nqdcount/nancount/nnscount/narcount', substr($data, 0, 12));
$question = [];
$offset = 12;
for ($i = 0; $i < $dnsHeader['qdcount']; $i++) {
$questionName = '';
$nameFound = false;
while (true) {
$labelLength = ord($data[$offset]);
if ($labelLength == 0) {
$offset++;
break;
}
if (($labelLength & 0xC0) == 0xC0) {
$offset += 2; // 跳过指针
break;
}
$questionName .= substr($data, $offset + 1, $labelLength) . '.';
$offset += $labelLength + 1;
}
$offset += 4;
$question[] = [
'qname' => rtrim($questionName, '.'),
'qtype' => isset(unpack('ntype', substr($data, $offset, 2))['type']) ? unpack('ntype', substr($data, $offset, 2))['type'] : '',
];
$offset += 4;
}

return [
'header' => $dnsHeader,
'question' => $question,
];
}

// 构建 DNS 响应
function dns_build_response($request, $ip)
{
$header = pack('nnnnnn', $request['header']['id'], 0x8180, 1, 1, 0, 0);
$question = '';
foreach ($request['question'] as $q) {
$question .= dns_compress_name($q['qname']) . pack('nn', 1, 1);
}
$answer = dns_compress_name($request['question'][0]['qname']) . pack('n*', 1, 1, 0, 1, 0, 4); // 响应类型为 A 记录,TTL 为 0 ,数据长度为 4
$answer .= inet_pton($ip); // 将 IP 地址转换为二进制格式

return $header . $question . $answer;
}

// 辅助函数,检查字符串结尾
function endsWith($haystack, $needle)
{
return substr($haystack, -strlen($needle)) === $needle;
}

// 辅助函数,压缩 DNS 消息中的域名
function dns_compress_name($name)
{
$parts = explode('.', $name);
$compressedName = '';
foreach ($parts as $part) {
$compressedName .= chr(strlen($part)) . $part;
}
return $compressedName . "\x00";
}
?>

```
果然我不是一个人😅
@Livid #47 现在试了下,的确 ok 了
https://cl.v2ex.pro/ 上的下载链接貌似失效了?@Livid

opensource.v2ex.pro 意外终止了连接

后来从 GitHub 下载的
279 天前
回复了 zhiboli 创建的主题 分享创造 youtube 中文配音
@zhiboli #2 配音其实跟字幕是一个性质,他们有自动字幕翻译就应该有自动配音翻译。有了这个功能,会进一步增加受众面和用户粘性,平台是受益的
1  2  3  4  5  6  7  8  9  10 ... 36  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1029 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 19:11 · PVG 03:11 · LAX 11:11 · JFK 14:11
Developed with CodeLauncher
♥ Do have faith in what you're doing.