本人和小组其他成员一起买了一个pro 20x订阅,搭了一个中转站方便使用,固定了代理ip,网页版gpt也使用了指纹浏览器,过了cyber认证,目前gpt主要用于网安研究使用。一个月不到被发了两封邮件警告cyber abuse啊 ,申诉被维持原判,现在导致不敢用了,害怕再来一次号没了,也不知道哪里出了问题,难道普通的网安研究也不行吗(没有逆向,破解等操作)。非常焦虑,没有AI直接停摆了 有没有佬懂的指点一下 1 个帖子 - 1 位参与者 阅读完整话题
上海实习生招聘,基础软件/嵌入式软件方向,有意留下联系方式沟通 要求: 1. 27 年毕业,会有编程考试 2. 有学校的要求,可以细聊 3. 实习工资挺好的 4. 要求实习 2 个月
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 前言 本教程的环境基于 jdk8 + langchain4j 0.35 教程源码放在这里了: github.com GitHub - worenbudaoni/rag-study-helper: 一个学习检索增强生成的全流程助手 一个学习检索增强生成的全流程助手 文章内容 因为内容比较多,我会从下面三个文章进行讲解,后续发布后会贴出来,这节讲: 接入飞书WIKI文档 RAG实现全流程 : 【开源、教程】RAG全流程实现(java+完整代码):第一弹 接入飞书WIKI文档 : 【开源、教程】RAG全流程实现(java+完整代码):第二弹 接口限流:令牌桶 + AOP 强烈建议先看完第一弹,不然后面代码有可能看不懂 实现逻辑 后面会有图文讲解的,这里就相当于大概介绍一下,看个大概就好,有不了解的不要先去搜,我后文都会讲,如果讲漏了麻烦评论一下,我改正 飞书开发者平台 : 1、去飞书开发者平台创建一个应用 2、给应用赋予权限(权限管理 菜单) 3、给应用赋予机器人能力(添加应用能力 菜单) 4、发布(版本管理与发布 菜单) 5、获取应用的app-id、app-secret(凭证和基础信息 菜单) 飞书app : 1、创建一个群聊 2、把机器人给拉进去 3、点击左边菜单的更多找到知识库,新建知识库(下面统一称为 WIKI) 4、添加群聊(机器人)为管理员:点 WIKI 进去会打开一个网站,左下角有个设置点进去,在成员设置->角色与权限->管理员,添加管理员,搜索我们刚才创建的有机器人的群聊并添加 5、在页面的连接处找到space-id,如: https://kcnvw23rzo5r.feishu.cn/wiki/settings/666666(666666就是我们要的space-id) 项目 : 1、创建一个job,用来定时获取文档(下面为job启动后的流程) 2、通过app-id、app-secret获取tenant_access_token和expire 3、通过tenant_access_token和space-id获取文档信息(名字、更新时间、documentToken 等等) 4、通过documentToken去获取文档的内容(字符串) 5、走 【开源、教程】RAG全流程实现(java+完整代码):第一弹 的入库流程 一、飞书开发者平台 app-id、app-secret 是啥 app-id :应用的唯一标识 app-secret :应用的密钥,在创建应用时由平台生成,可用于获取app_access_token 1、飞书开放平台创建企业应用 开发者后台 - 飞书开放平台 这里注意的是创建好应用后需要审核、启用,所以企业级的应用权限在领导手上,我们可以创建一个个人版的飞书账号来做实验 2、给应用赋予权限 (权限管理菜单) 直接复制我的也行 { "scopes": { "tenant": [ "bitable:app:readonly", "docx:document:readonly", "drive:drive:readonly", "drive:file:readonly", "wiki:wiki:readonly" ], "user": [] } } 3、给应用赋予机器人能力 (添加应用能力菜单) 4、发布 (版本管理与发布菜单) 创建好后发布就行 5、获取应用的app-id、app-secret(凭证和基础信息菜单) 二、飞书app space-id是啥 就是飞书知识库(WIKI)所对应的空间ID,我们找到这个空间就可以找到下面的文档 打个比方就是图书馆的书架,书架有个唯一标识(小说),我们根据这个书架ID(小说)去找下面所有的书 1、创建一个群聊 2、把机器人给拉进去 3、点击左边菜单的更多找到知识库,新建知识库(下面统一称为 WIKI) 4、添加群聊(机器人)为管理员 点 WIKI 进去会打开一个网站,左下角有个设置点进去,在成员设置->角色与权限->管理员,添加管理员,搜索我们刚才创建的有机器人的群聊并添加 5、在页面的连接处找到space-id 如: https://kcnvw23rzo5r.feishu.cn/wiki/settings/666666(666666就是我们要的space-id) 三、项目 这里就不按照上面实现逻辑写的走了,我就按照代码里的讲解 1、job总览(步骤拆解在后面) FeishuSyncService.java // 没想加重框架,如果用xxl-job什么的,自己搬一下就行了 @Scheduled(cron = "${app.feishu.cron}") public void syncWiki() { log.info("Starting Feishu wiki sync for space: {}", spaceId); try { // 获取全部文档信息(通过app-id、app-secret、space-id) // 这里逻辑后面会讲 List<WikiNode> nodes = feishuClient.getWikiNodeTree(spaceId); log.info("Found {} nodes in wiki", nodes.size()); // 成功数量,跳过数量(如果数据存在了关系型数据库且没有更新就跳过),失败数量 int synced = 0, skipped = 0, failed = 0; for (WikiNode node : nodes) { // 后缀 String objType = node.getObjType(); // 文档令牌 用来获取 文档内容 String nodeToken = node.getNodeToken(); // 更新时间判断是否需要跳过 long updateTime = node.getUpdateTime(); // 是否入库 Documents doc = documentsMapper.selectOne( Wrappers.<Documents>lambdaQuery() .eq(Documents::getFeishuNodeToken, nodeToken) ); // 文档是否更新是否需要跳过,这个更新时间不在where条件里面是因为后续要继续用到这个数据 if (doc != null && doc.getFeishuUpdateTime() != null && doc.getFeishuUpdateTime() == updateTime) { skipped++; continue; } try { // 文档内容 String content; // 获取文件名 String fileName; switch (objType) { case "doc": case "docx": // 获取文档内容 // 这里逻辑就不讲了,我后面扔给飞书的文档,照着对接或者看我源码就好 content = feishuClient.getDocumentContent(node.getObjToken()); fileName = node.getNodeTitle() + "_文档"; break; case "sheet": content = feishuClient.getSheetContent(node.getObjToken()); fileName = node.getNodeTitle() + "_表格"; break; case "bitable": content = feishuClient.getBitableContent(node.getObjToken()); fileName = node.getNodeTitle() + "_多维表格"; break; default: skipped++; continue; } // 如果是更新,先删旧向量和映射记录 if (doc != null) { // 查询旧文档相关的向量映射 List<DocumentChunks> oldChunks = documentChunksMapper.selectList( Wrappers.<DocumentChunks>lambdaQuery() .eq(DocumentChunks::getDocumentId, doc.getId()) ); // 有两张表 // 第一张为文档库:记录文档标题、更新时间、创建人等信息 // 第二张为分片库:记录向量数据库插入后的向量ID // 向量ID List<String> vectorIds = oldChunks.stream() .map(DocumentChunks::getVectorId) .collect(Collectors.toList()); // 删除向量 embeddingStore.removeAll(vectorIds); // 删除映射记录 documentChunksMapper.delete( Wrappers.<DocumentChunks>lambdaQuery() .eq(DocumentChunks::getDocumentId, doc.getId()) ); // 删除文档 documentsMapper.deleteById(doc.getId()); } // RAG 入库流程 (第一篇文章中亦有记载(跟第一章代码有些许出入,看完第一章后,直接看源码更佳)) ingestionService.ingestFeishuDocument(fileName, content, nodeToken, updateTime, objType); synced++; log.info(" Synced: {} ({})", node.getNodeTitle(), nodeToken); } catch (Exception e) { log.error(" Failed to sync node: {} ({})", node.getNodeTitle(), nodeToken, e); failed++; } } // 清理远程已删除的文档 // 这里的逻辑是 // 第一次job执行:查询飞书wiki给了 A、B、C 三个文档入库 // 后面有人在wiki中删了 C 文档 // 第二次job执行:只有查询出 A、B 两个文档 // 这时就要去数据库中和向量库中删除多余的 C 文档 List<String> remoteTokens = nodes.stream() .map(WikiNode::getNodeToken) .collect(Collectors.toList()); if (!remoteTokens.isEmpty()) { // MySQL 查出本地多出的记录,只遍历需要删除的 List<Documents> toRemove = documentsMapper.selectList( Wrappers.<Documents>lambdaQuery() .isNotNull(Documents::getFeishuNodeToken) .notIn(Documents::getFeishuNodeToken, remoteTokens) ); for (Documents removed : toRemove) { log.info("Document removed remotely, cleaning up: {} ({})", removed.getDocumentName(), removed.getFeishuNodeToken()); List<DocumentChunks> chunks = documentChunksMapper.selectList( Wrappers.<DocumentChunks>lambdaQuery() .eq(DocumentChunks::getDocumentId, removed.getId()) ); List<String> vectorIds = chunks.stream() .map(DocumentChunks::getVectorId) .collect(Collectors.toList()); // 向量数据库 删 embeddingStore.removeAll(vectorIds); // 关系型数据库 分片库 删 documentChunksMapper.delete( Wrappers.<DocumentChunks>lambdaQuery() .eq(DocumentChunks::getDocumentId, removed.getId()) ); // 关系型数据库 文档库 删 documentsMapper.deleteById(removed.getId()); } } log.info("Feishu wiki sync complete: synced={}, skipped={}, failed={}", synced, skipped, failed); } catch (Exception e) { log.error("Feishu wiki sync failed", e); } } 2、递归获取知识库所有文档节点 FeishuClient.java 这里其实没什么特别好讲的点,就是参考飞书文档,然后请求并解析 我在源码里也标记了文档的地址,所以这里放一个总体的查询地址 开发文档 - 飞书开放平台 /** * 获取 tenant_access_token(内部自动缓存和刷新) */ public synchronized String getAccessToken() throws IOException { if (cachedToken != null && System.currentTimeMillis() < tokenExpireAt) { return cachedToken; } String json = "{\"app_id\":\"" + appId + "\",\"app_secret\":\"" + appSecret + "\"}"; // https://open.feishu.cn/document/server-docs/authentication-management/access-token/tenant_access_token_internal Request request = new Request.Builder() .url(baseUrl + "/open-apis/auth/v3/tenant_access_token/internal") .post(RequestBody.create(JSON, json)) .build(); try (Response resp = httpClient.newCall(request).execute()) { JsonNode body = objectMapper.readTree(resp.body().string()); if (body.get("code").asInt() != 0) { throw new IOException("Failed to get access token: " + body); } cachedToken = body.get("tenant_access_token").asText(); // tenant_access_token 的最大有效期是 2 小时 // 7200 是秒 int expire = body.get("expire").asInt(7200); // 防御性编程 免得刚好过期 由于网络延时 造成接口调用失败 tokenExpireAt = System.currentTimeMillis() + (expire - 60) * 1000L; return cachedToken; } } /** * 递归获取知识库所有文档节点。 */ public List<WikiNode> getWikiNodeTree(String spaceId) throws IOException { List<WikiNode> allNodes = new ArrayList<>(); collectNodes(spaceId, null, allNodes); return allNodes; } private void collectNodes(String spaceId, String parentNodeToken, List<WikiNode> result) throws IOException { List<WikiNode> currentLevelNodes = new ArrayList<>(); String pageToken = null; do { // https://open.feishu.cn/document/server-docs/docs/wiki-v2/space-node/create StringBuilder url = new StringBuilder(baseUrl + "/open-apis/wiki/v2/spaces/" + spaceId + "/nodes"); if (parentNodeToken != null) { url.append("/").append(parentNodeToken).append("/children"); } url.append("?page_size=50"); if (pageToken != null) { url.append("&page_token=").append(pageToken); } Request request = new Request.Builder() .url(url.toString()) .header("Authorization", "Bearer " + getAccessToken()) .get() .build(); try (Response resp = httpClient.newCall(request).execute()) { JsonNode body = objectMapper.readTree(resp.body().string()); if (body.get("code").asInt() != 0) { log.error("Wiki API error for URL [{}]: {}", url, body); break; } JsonNode items = body.path("data").path("items"); for (JsonNode item : items) { WikiNode node = new WikiNode(); // 节点token node.setNodeToken(item.path("node_token").asText()); // 对应文档类型的token,可根据 obj_type 判断属于哪种文档类型。 node.setObjToken(item.path("obj_token").asText()); // 文档类型,对于快捷方式,该字段是对应的实体的obj_type。 // 可选值有: // doc:旧版文档 sheet:表格 mindnote:思维导图 bitable:多维表格 file:文件 docx:新版文档 slides:幻灯片 node.setObjType(item.path("obj_type").asText()); // 文档标题 node.setNodeTitle(item.path("title").asText()); node.setParentNodeToken(parentNodeToken); // 是否有子节点 node.setHasChild(item.path("has_child").asBoolean(false)); // 文档最近编辑时间 String editTime = item.path("obj_edit_time").asText(); node.setUpdateTime(Long.parseLong(editTime.isEmpty() ? "0" : editTime)); currentLevelNodes.add(node); } pageToken = body.path("data").path("page_token").asText(null); } } while (pageToken != null && !pageToken.isEmpty()); // Add all nodes from this level, then recurse into children result.addAll(currentLevelNodes); for (WikiNode node : currentLevelNodes) { if (node.isHasChild()) { collectNodes(spaceId, node.getNodeToken(), result); } } } 四、测试 1、导入文档 还是拿这个 补鸡稻 作为测试案例 2、配置 app-id、app-secret、space-id和sync-enable 我这里通过 jvm 运行参数注入,免得又把 apikey 给上传到 github 了 sync-enable 记得为 true,不然不注册 spring bean 3、运行时发现文档可以查询到,并且入库了 4、提问 5、测试结束,完结撒花 2 个帖子 - 2 位参与者 阅读完整话题
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 一个 Windows 小工具,可以读取本机 Claude Code 用量,并推送到 EDIFIER 花再 Halo PixelBar 点阵屏显示,支持手动推送、定时刷新、设备选择和界面化配置。 它可以在 Windows 上自动读取当前电脑的 Claude Code 登录凭证,查询 Claude 用量信息,然后渲染成 256x32 点阵画面,通过 HID 推送到 EDIFIER 花再 Halo PixelBar 显示。 界面: 效果图: 主要功能: 自动获取 Claude Code usage 信息 支持 5 小时、7 天、Sonnet 用量展示 支持 EDIFIER 花再 Halo PixelBar 点阵屏推送 支持手动推送一次 支持定时刷新,比如 5 / 10 / 30 分钟 支持选择设备 支持自定义显示文字、单位、布局、字体参数 支持推送前自动切换 WORK 场景 提供 GUI 可视化配置界面 附带源码和可直接运行的 exe 隐私说明: 工具只读取本机 Claude Code 的 OAuth 凭证,用于查询 usage API;不会上传 token,不会把 token 写入配置文件,也不会打包进 exe。项目是非官方工具,不属于 EDIFIER / Anthropic / Claude 官方项目。 项目地址: https://github.com/3441293738/claude-edifier-pixelbar-usage 1 个帖子 - 1 位参与者 阅读完整话题
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 最近做了一个自己在用的 YouTube 下载插件,开源出来。 项目地址: github.com GitHub - fengjunda888/youtube-download-extension: YouTube 视频下载 Chrome 扩展,基于… YouTube 视频下载 Chrome 扩展,基于 yt-dlp,支持合集、多任务、画质选择和下载进度 这个插件的特点: 基于 yt-dlp Chrome 插件形式 支持 Windows 和 macOS 支持先解析链接,再选择下载 支持单个视频、合集、多选、全选 支持画质选择 支持查看下载进度和任务状态 目前的使用方式是: 在 Chrome 加载 extension 目录 本地安装 Native Host 配好 yt-dlp 在插件里粘贴 YouTube 链接,先解析,再选择下载 Windows 安装比较直接: Install-NativeHost.bat macOS 也支持: Install-NativeHost.sh 说明一下: 这个工具不会绕过 YouTube 权限限制,会员、私有、区域限制之类的视频还是取决于 yt-dlp 和账号/网络环境。 欢迎试用,也欢迎提 issue / PR。 希望能给个star! 谢谢! LINUX DO 版主 1 个帖子 - 1 位参与者 阅读完整话题
老是会说一些我没说过的话当成是我对他的要求,明明没做的反馈说已经做了。。 6 个帖子 - 3 位参与者 阅读完整话题
各种 agent 都用过了, agents.md 明确要求了文档生成规则、文件名生成规则、流程规则,但是就是不遵守。包括有时候开发测试规则都不遵守,有啥好的办法么
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社区和佬友监督: 是 以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出 GitHub - Hittopu/okfa-one-keyboard-for-all: okfa - one keyboard for all · GitHub 可以实现mac/windows的键盘一键切换成另外一台windows的键盘,可以实现在工位偶尔在另一台电脑上输入nvidia-smi的方便操作,也间接的实现了(mac键盘打瓦) 1 个帖子 - 1 位参与者 阅读完整话题
各种 agent 都用过了, agents.md 明确要求了文档生成规则、文件名生成规则、流程规则,但是就是不遵守。包括有时候开发测试规则都不遵守,有啥好的办法么
各种 agent 都用过了, agents.md 明确要求了文档生成规则、文件名生成规则、流程规则,但是就是不遵守。包括有时候开发测试规则都不遵守,有啥好的办法么
上面一直要求国产化设备,然后单位去年买了一台K100,到手以后发现,如果要跑模型,就必须要用人家在开发者中心适配好的才行。 而且,在他开发者中心的文档和他们git上面的文档还不一样… 5 个帖子 - 4 位参与者 阅读完整话题
发PTTIME*6,无要求,了解PT即可。 1 个帖子 - 1 位参与者 阅读完整话题
请问一下,怎么申请成为L站的管理?是有什么要求以及申请渠道吗 5 个帖子 - 5 位参与者 阅读完整话题
6月10日,韩国板桥。或许连Kakao自己都没想到,这家曾经代表着韩国互联网“超高速”增长与“酷”文化的企业,其总部门前最热闹的一天,不是因为新品发布,也不是什么明星代言活动,而是600多名员工高举标语、喊着口号的罢工集会。 对,你没看错,Kakao,这个承载着韩国人生活方方面面的国民级应用巨头,迎来了它创立以来的“第一次”大规模罢工。这事儿在韩国科技圈的震撼程度,恐怕不亚于一颗深水炸弹。 为什么是现在?又为什么是Kakao? 新闻里说得直白:改善奖金制度、调整薪酬结构、推动更透明合理的员工激励机制。翻译一下,就是员工们觉得,公司赚的钱和自己付出的努力,在账面上“失衡”了。 表面看是“钱没给够”,但往深了扒,这其实是Kakao那层“梦想职场”的滤镜,碎了。 很长一段时间里,Kakao都是韩国程序员的“圣地”。它以扁平化、自由开放著称,领着不菲的薪水,做着改变韩国人生活方式的产品,那种优越感和归属感,是很多传统财阀大厂给不了的。员工们在这里工作,不仅仅是打工,更像是在参与一场宏大的、有趣的数字革命。那时候,谈“钱”似乎有点俗,因为“梦想”和“股票期权”的光环足以掩盖一切。 但梦想不能当饭吃,尤其是在经济周期的寒风吹过来的时候。 当Kakao从那个锐意进取的挑战者,逐渐变成一个庞大臃肿的商业帝国时,故事的内核就变了。增长放缓、股价承压、新业务屡屡碰壁,管理层自然要开始“降本增效”,收紧裤腰带。 可对于习惯了高增长红利的一线员工来说,感受到的却是:指标越来越重,加班越来越晚,但奖金池却肉眼可见地缩水了。更致命的是,员工们发现,薪酬调整的尺子似乎并不透明,激励机制的承诺,兑现起来也打了折扣。 这种“撕裂感”是爆发此次罢工的核心燃料。过去,我们是一起为了理想狂奔的战友,你画的大饼我认,因为我能看到它在变大。但现在,你开始跟我精打细算地计较工时和成本,把我当成庞大机器上一颗随时可以替换的螺丝钉,那我就要跟你认认真真地谈谈法律、合同和真金白银了。 值得注意的是,这次站出来的600人,不是普通员工,而是工会成员。在高科技、高收入的韩国IT行业,工会一直是个有点“非主流”的存在。而如今,Kakao工会能用一场史无前例的罢工,展现出如此强的组织力和行动力,这本身就是对管理层的一记响亮耳光。它宣告了一个事实:过去那种依靠领袖魅力和“文化洗脑”式的管理,已经行不通了。新一代的知识工作者,自我意识更强,对权利边界和规则公平的要求更高。 失业君小编总结认为,这不仅仅是Kakao一家的危机,更是整个韩国科技行业,乃至所有曾经以“改变世界”为口号的新经济公司的共同寓言。 当高速增长的红利期结束,当“选择权”的暴富神话破灭,企业用什么来留住最顶尖的大脑?是继续贩卖虚无缥缈的情怀,还是建立一套经得起审视、能够被量化的公平分配机制? Kakao的罢工员工给出了他们的答案。他们用行动撕掉了那层温情脉脉的面纱,告诉资本方一个最朴素的道理:在任何一种雇佣关系里,当精神共鸣难以维系时,最基本的物质尊重和规则透明,就是最后的底线。如果你连这个也守不住,那么,再酷的公司,也终将迎来门前那刺眼的标语和沉默的抗议。 这或许是Kakao成长至今,必须经历的最昂贵、也最深刻的一堂管理课。而台下的学生,是整个韩国科技界。这出戏,才刚刚开场。 经理人热议 @人生如梦饭如初(IP沪): 以前是‘来我们一起改变世界’,现在是‘来我们一起算算KPI’。滤镜碎了很正常,毕竟滤镜又不能当工资发。 @Shia7690(IP粤): 一边是高管拿着天价年薪,一边是基层连绩效奖金都发得不明不白。 @RADIOfan(IP冀): 这就是我为什么越来越不相信‘企业文化’这四个字。能经得起真金白银考验的,才是真文化。余下的,都是廉价装饰画。 @听汐哥(IP吉): 有个评论说得好:当增长神话破灭,大家就只能坐下来分存量蛋糕了。分蛋糕的刀不透明,那就别怪掀桌子。 @beawing996(IP贵): 哈哈,想当年多少人为了进Kakao挤破头,现在门前的标语比招聘广告还醒目。真是三十年河东,三十年河西。 @向清尔生(IPHK): 三星员工要求加薪的成功的案例教会了其他韩企:别谈梦,谈钱。透明地谈钱。 查看评论
各位大佬,哥哥,姐姐们,我有一个开源的项目在GitHub上,要发在论坛上,有啥要求吗,这些要选那些啊。 1 个帖子 - 1 位参与者 阅读完整话题
RT ,我发了一个招聘,除了卡年龄 32 岁,其他要求并不高。 但就是很难有合适的简历。 2015 年后,大部分公司都转云和 k8s 了,对存储需求断崖式下降,存储行业极速萎缩,已经很少有新人进入了。 现在卡年龄 32 岁,也就是必须 16 年之后才入行的新人才满足。 想想招不到人也是意料之外,情理之中了,当年因,现在也算是结果了。
RT ,我发了一个招聘,除了卡年龄 32 岁,其他要求并不高。 但就是很难有合适的简历。 2015 年后,大部分公司都转云和 k8s 了,对存储需求断崖式下降,存储行业极速萎缩,已经很少有新人进入了。 现在卡年龄 32 岁,也就是必须 16 年之后才入行的新人才满足。 想想招不到人也是意料之外,情理之中了,当年因,现在也算是结果了。
RT ,我发了一个招聘,除了卡年龄 32 岁,其他要求并不高。 但就是很难有合适的简历。 2015 年后,大部分公司都转云和 k8s 了,对存储需求断崖式下降,存储行业极速萎缩,已经很少有新人进入了。 现在卡年龄 32 岁,也就是必须 16 年之后才入行的新人才满足。 想想招不到人也是意料之外,情理之中了,当年因,现在也算是结果了。
任职要求: 1 、关注最新 Web 应用漏洞、系统漏洞,并迅速掌握漏洞利用方法,能够了解漏洞原理、利用方法以及修复方法; 2 、熟悉渗透测试流程,能够按照渗透测试框架进行渗透测试,拥有三年以上渗透测试项目经验优先: 3 、熟练使用 AWVS 、Burp Suite Pro 、SQLMap Metaspoloit 、Cosbalt Strike 等常见安全测试工具; 4 、熟悉 Windows 、Linux 平台的攻击技巧,了解 Apache Nginx 等中间件漏洞; 5 、熟练使用 Python 、Go 、PHP 、Shell 等一种及以上脚本语言,能够独立编写各类小工具及 EXP ,提高工作效率 6 、熟悉木马免杀,钓鱼,鱼叉以及水坑攻击: 7 、从事过打击黑灰产业、反诈类项目及做过案件服务优先。 8 、岗位偏渗透方向 9 待遇薪资详谈 PM:VEfvvJogQGxpbjFfNjg4ODg=
今天 iTab 更新跟 refined-github 冲突搞坏了 GitHub 的布局,就去公众号找到了兔小巢的反馈渠道。 把问题描述完了之后,上传图片的时候要求登录,直接自动跳转到了登录页。 登录完回到原来的页面之后,输入框里的内容全部清空了。 我真的是服了,必须要吐槽一下。