找到10831个回复
  • 2024年,将相册里的视频压缩为AV1编码
    65480点击 / 2024-02-07发布 / 03-16 01:32回复 / /

    @tasy5kg,下图 pig-10 的描述,很符合我现在对于 x265svt-av1 适用视频的感受。。

    据我所知就当年来说,HEVC因为继承了AVC的很多特性,对低分辨率或者Spatial复杂度高的素材品质表现优于AV1。而AV1在高清、4k等分辨率下,Spatial复杂度低、大范围色块多的素材显著优于HEVC。

    Screenshot_2025-03-13-17-53-12-344_com.zhihu.android.avif(58.69 KB)

  • 2024年,将相册里的视频压缩为AV1编码
    65480点击 / 2024-02-07发布 / 03-16 01:26回复 / /

    @tasy5kg,感觉有必要重新审视下 av1。。我尝试画面精细的视频,svt-av1 不如 x265。。

    你若感兴趣,我再展开说

  • 【楼主删除了该帖】
    13点击 / 03-15 16:59发布 / 03-15 17:04回复 / /
    层主 @咯叽 于 2025-03-15 17:57 删除了该楼层。
  • 【管理员删除了该帖】
    33点击 / 03-15 10:27发布 / 03-15 13:49回复 / /
  • 无法在linux成功搭建起hu60 php5.4.45版本
    2685点击 / 03-12 13:18发布 / 03-13 00:19回复 / /

    @yingshaoxo,你是说,帖子放内存里,就不会慢了,是吧。。

    • 单线程提供服务,并发量会不会很低。。
    • 多线程数据同步,会不会很麻烦?
    • 啥时候落盘一次数据呢?此时整个服务都要卡住吗。。
    • 后续扩展功能,会不会还不如写 SQL 方便。。
  • @yingshaoxo

    之前用mysql的时候,安装需要导入一个sql的命令文本文件,来实现table的建立。但现在换成sqlite,难道只能手工建表了吗

    或者你把mysql的建表语句修改为兼容sqlite然后写一个程序去执行这些sql就能自动建出来了。

    从我切换到mysql以来,后续所有涉及数据库的代码修改都没有考虑sqlite兼容性,所以这个sqlite连接功能其实基本不能用,只是还没从代码里删掉而已。

  • 无法在linux成功搭建起hu60 php5.4.45版本
    2685点击 / 03-12 13:18发布 / 03-12 19:19回复 / /
    @无名啊

    1. 全文搜索不是事儿
    2. 增量备份没必要,一般纯文本的数据不会超过3GB
    3. 一天备份一次
    4. 服务器程序一般不会断电
    5. SSD的速度很快了,人类几乎没有延时感。同时纯文本要做memory dict cache,保存最近访问的1000个文章,快如闪电。

    我之前用Python写过类似的数据库,只不过没写中心化的pipe line,多进程会出问题:
    https://github.com/yingshaoxo/auto_everything/blob/dev/auto_everything/database.py#L357

    其中一点代码:
    “”“
            if self.use_sqlite == False:
                self.database_txt_file_path = self._disk.join_paths(self.database_base_folder, f"{self.database_name}.txt")
                if (not self._disk.exists(self.database_txt_file_path)):
                    self._io.write(self.database_txt_file_path, "")
    ”“”

    “”“
        def raw_search(self, one_row_json_string_handler: Callable[[str], dict[str, Any] | None]) -> Iterator[dict[str, Any]]:
            """
            one_row_json_string_handler: a_function to handle search process. If it returns None, we'll ignore it, otherwise, we'll add the return value into the result list.
            ```
                def one_row_json_string_handler(item: str) -> dict[str, Any] | None:
                    return json.loads(item)
                    #return None
            ```
            """
            if self.global_multiprocessing_shared_dict != None:
                self._wait_until_unlock()
                self.global_multiprocessing_shared_dict[self._the_key_for_the_lock_of_memory_data] = True

                for row in self.global_multiprocessing_shared_dict[self._the_key_for_memory_data]:
                    json_string = self._json.dumps(row, sort_keys=True).strip()
                    result = one_row_json_string_handler(json_string)
                    if (result != None):
                        yield result

                self.global_multiprocessing_shared_dict[self._the_key_for_the_lock_of_memory_data] = False
                return

            if self.use_sqlite:
                for row in self.sql_cursor.execute(
                    f"SELECT * FROM {self._sql_table_name}"
                ):
                    result = one_row_json_string_handler(row[0])
                    if (result != None):
                        yield result
            else:
                with open(self.database_txt_file_path, "r") as file_stream:
                    previous_position = None
                    while True:
                        current_position = file_stream.tell()
                        line = file_stream.readline()
                        if previous_position == current_position:
                            # reach the end
                            break
                        previous_position = current_position
                        if (line.strip() == ""):
                            # ignore empty line
                            continue

                        if (line.startswith('#')):
                            # ignore deleted line
                            continue

                        result = one_row_json_string_handler(line)
                        if (result != None):
                            yield result
    ”“”
  • 无法在linux成功搭建起hu60 php5.4.45版本
    2685点击 / 03-12 13:18发布 / 03-12 19:07回复 / /
    @老虎会游泳


    谢谢,改了db folder permission后,原错误确实消失了。


    后来我自己建了一个新的sqlite的db文件,现在主页可以访问了:
    https://gitlab.com/yingshaoxo/tiger_bbs_php5.4.45/-/blob/main/db/sqlite.sql_command?ref_type=heads
    https://gitlab.com/yingshaoxo/tiger_bbs_php5.4.45/-/blob/main/db/test.db3?ref_type=heads

    但无法注册用户,会报错。


    新的错误:

    错误代码:22
    错误信息:数据库写入错误,SQL预处理失败。
    错误发生在 /var/www/html/class/user.php 的第 416 行
    错误追踪信息:
    #0 /var/www/html/page/user/reg.php(30): user->reg('yingshaoxo', 'password', 'yingshaoxo@gmai...')
    #1 /var/www/html/q.php(74): include('/var/www/html/p...')
    #2 {main}


                $rs = $db->prepare('SELECT `active`,`uid`,`name`,`mail`,`sid`,`sidtime`,`regtime`,`acctime`' . ($getinfo ? ',`info`' : '') . ' FROM `' . DB_A . 'user` WHERE `sid`=?');

                $x_getinfo = $getinfo;
            }
            if (!$rs || !$rs->execute(array($sid))) throw new PDOException('数据库查询失败,SQL' . ($rs ? '执行' : '预处理') . '失败。', $rs ? 21 : 22);
            $data = $rs->fetch(db::ass);

    ______


    > 以下不是重点:

    我不太懂php的程序,感觉编译器太难固定了,我之前找到一个5.7MB的x86_linux静态编译的Python3.2程序,感觉就挺好用:
    https://gitlab.com/yingshaoxo/yingshaoxo_alpine_x86_system/-/blob/main/python?ref_type=heads

    我感觉如果我有时间的话,都想用python重写一遍简单的wap论坛了,完全脱离docker,sql,javascript,php,就简单的自实现的http server + file read/write + html + css
  • 无法在linux成功搭建起hu60 php5.4.45版本
    2685点击 / 03-12 13:18发布 / 03-12 18:51回复 / /

    @yingshaoxo,你要用文件系统,代替数据库? 这些事情咋办:

    • 全文搜索?
    • 增量备份?
    • 帖子阅读量,帖子文件要频繁保存?
    • 保存时程序炸了/系统崩了/断电关机/……,帖子丢失?
    • 一个帖子,只能同时一人访问?(前一个阅读量 + 1 并保存后,下一个才能继续 + 1 再保存)
  • 谁有兴趣通过ssh远程看看
    一加ace2Pro(灰|24+1024)

  • 无法在linux成功搭建起hu60 php5.4.45版本
    2685点击 / 03-12 13:18发布 / 03-12 14:24回复 / /

    @yingshaoxo,docker 拉取镜像时指定版本号,就能固定版本了吧

    网络设置也不麻烦吧,实在不行用 host 模式?性能损耗也更少些?

  • 此外,这里有支持php 8.1的版本。注意:不支持php 8.2。
    https://github.com/hu60t/hu60wap6
    数据库必须使用mysql或者与之兼容的mariadb等分支。

  • @yingshaoxo,你要给/var/www/html/db文件夹写入权限(chmod 0777 /var/www/html/db)。不过其实程序早就不支持sqlite了,因为我后来写了很多MySQL专属语法,用sqlite肯定会报SQL语法错误,你得自己改。

  • 【楼主删除了该帖】
    6402点击 / 02-07 16:06发布 / 03-12 13:42回复 / /

    @咯叽,是的,齐全的怀旧游戏,能源源不断吸引人去论坛,不聊游戏也能插科打诨日常谈趣。。

    但隔壁去年才开的技术论坛,没几天也爆火了呀。。

  • 【楼主删除了该帖】
    6402点击 / 02-07 16:06发布 / 03-12 13:35回复 / /
    层主 @咯叽 于 2025-03-30 01:59 删除了该楼层。
  • 【楼主删除了该帖】
    6402点击 / 02-07 16:06发布 / 03-12 13:22回复 / /

    @老虎会游泳,对呀,然后坛子里找人一起玩就行了呗。。

    就是人有点少,响应者可能寥寥。。

    隔壁 19 年小众游戏论坛,至今月活都能有三五千。。

    会不会像他们一样,找些主题模板,风格简约一些都无所谓,都能留住人呢。。

    还是说他们塑造了个《怀旧游戏》主题,更能凝聚志同道合的人呢。。

    可本站也有《技术讨论》主题,另一个隔壁也是这主题,去年开站,没几天也爆火了呀。。

    还是感觉,风格改得现代化一些,能留住人。。

    毕竟主要论坛功能都不缺。。还是说他们不用审核,用户不觉得烦?但现在登录用户,几乎无视这个了吧。。

    Screenshot_2025-03-12-13-12-49-249_mark.via.avif(28.75 KB)

  • Wine的编译依赖
    9295点击 / 2024-03-12发布 / 03-12 09:55回复 / /
  • 【楼主删除了该帖】
    6402点击 / 02-07 16:06发布 / 03-12 09:53回复 / /

    @无名啊,支持

  • 【楼主删除了该帖】
    6402点击 / 02-07 16:06发布 / 03-12 00:14回复 / /

    @老虎会游泳,它支持远程联机吧,坛子里找人约时间一起玩呗

  • 【楼主删除了该帖】
    6402点击 / 02-07 16:06发布 / 03-11 23:50回复 / /

    最近双影奇境挺火的,不过要两个人玩