ClippingKK

整理, 复盘, 表达, 做人

大家在读

耿济之译卡拉马佐夫兄弟

耿济之译卡拉马佐夫兄弟

[俄] 费奥多尔·陀思妥耶夫斯基

安娜·卡列尼娜

安娜·卡列尼娜

[俄] 列夫·托尔斯泰

悲惨世界(上中下)

悲惨世界(上中下)

[法] 维克多·雨果

水浒全传校注(全十册)

水浒全传校注(全十册)

施耐庵集撰 罗贯中纂修 王利器校注

刘擎西方现代思想讲义

刘擎西方现代思想讲义

刘擎

被讨厌的勇气

被讨厌的勇气

岸见一郎 古贺史健

用得上的哲学

用得上的哲学

徐英瑾

故事

故事

[美]罗伯特·麦基

这些朋友爱读书由于隐私问题,并不展示用户书摘内容

    lawyer_riclawyer_ric
    cbrcbr
    fengyukongzhoufengyukongzhou
    oyasimioyasimi
    AnnatarHeAnnatarHe

Feature List

开放

我在想:“什么是地狱?”我认为,地狱就是“再也不能爱”这样的痛苦

—— 《卡拉马佐夫兄弟》 [俄]费奥多尔·陀思妥耶夫斯基

AnnatarHe 摘录于

网页分享组件

在详情页点击 `复制 HTML`

现代

Web arch

架构

现代软件架构上组织的产品,非常自豪~
extern crate ck_cli;
use serde_json;
use std::{env, fs};
use std::fs::File;
use std::io::prelude::*;
#[test]
fn parse_en_file() {
let file_name = "clippings_en";
let mut current_dir = env::current_dir().unwrap();
current_dir.push("fixtures");
let mut src_en_file = current_dir.clone();
src_en_file.push(format!("{}.txt", file_name));
let mut f = File::open(src_en_file).unwrap();
let mut result = String::new();
f.read_to_string(&mut result).unwrap();
let mut parsed_data = ck_cli::CKParser::do_parse(&result).unwrap();
let mut result_en_file = current_dir.clone();
result_en_file.push(format!("{}.result.json", file_name));
let mut r = File::open(result_en_file).unwrap();
let mut expected_json = String::new();
r.read_to_string(&mut expected_json).unwrap();
let mut expected_struct: Vec<ck_cli::CKParser::TClippingItem> =
serde_json::from_str(&expected_json).unwrap();
parsed_data.sort_by(|a, b| a.content.cmp(&b.content));
expected_struct.sort_by(|a, b| a.content.cmp(&b.content));
let ss = serde_json::to_string(&parsed_data).unwrap();
let dd = serde_json::to_string(&expected_struct).unwrap();
assert_eq!(ss, dd)
}

代码

可测试,可维护的稳定代码

产品洞见

隐私

iOS 小组件

我们为您的 iPhone 桌面提供小组件,方便随时 review 曾经的阅读状况

隐私

我们真心关注您的隐私情况 —— 您可屏蔽书摘的对外访问情况
隐私
👍

交流

您可留下一些深思熟虑和其他阅读者共同交流

使长阅读再次伟大

ios
android
wechat mini program
ios
立即体验!