V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  jiayouzl  ›  全部回复第 4 页 / 共 17 页
回复总数  333
1  2  3  4  5  6  7  8  9  10 ... 17  
@fredweili 我家孩子跟他说的情况一样,ABCD 是不教的,直接大跨越的,就像老话说的走路都没学得会跑步了.
@YVAN7123 是的,现在也只有这样了,我原本的思路是大课学校教,我老婆辅,我培养小孩的运动方面的兴趣,我儿子特别喜欢羽毛球与滑板这 2 个运动,校外培训班一直在支持他,是我之前把公立学校想的太好了,英语不管将来在国内是主还是副我是肯定要想办法让他学起来的。
@Arivan996 几个主课老师我接触下来还是挺不错的,挺负责的,至少自己小孩那块知识点薄弱要巩固都会通知家长,就是英语课大幅度削弱但实际考试难度与减负前一样,这就太不合理了。

之前教培机构报名小孩组织够了就能开课,现在虽然还有但不敢开太多班上面我原因也说了就。
@fredweili 这个道理我肯定懂,学校毕竟属于大环境老师精力也有限完全能理解,现在的问题是课程大幅度减少但考试难度一点没变,这就不合理了吧。
@ersic 我邻居小孩我看着他在这所学校从 1 年级到毕业的,我跟他爸关系挺好的聊起过这所学校之前英语是教的非常不错的,到我小孩了就这幅样子了。
@fredweili 这不是我满不满意的问题,既然英语被降级,一周又只有 1 节课,那期末考个啥呢? 1 年级期末学校就考了英语,当时就是我老婆周末给他补的课,考的口语。别的地方不知道,杭州这边中考英语还是跟语文数学一样份量的考试,我认为既然上头觉得英语无用不教了那就不考不算整体成绩里,我们家长自己想办法让供他学英语,我自己程序员是深知英语的作用的,课堂不教,考试不落,这叫什么事呢?对吧
我用这个插件老版本的,新版本确实不行,我用的版本还是没改这个名之前的,还不错的.
我 06-15 年做独立开发者 9 年,有什么问题?电脑就是用来赚钱的,现实中的朋友跟技术一丁点不搭嘎纯玩,工作就工作,玩就玩!
我就喜欢用 Swift 开发 iOS 应用,原生应用就是各方面使用起来体感都不是 H5 能比的.DEMO 我用 H5 写,正式开发必须 Swift 这是我对品质的要求.
98 天前
回复了 ggp1ot2 创建的主题 程序员 mac 上 sublime 公司不让用,有啥替代品?
好家伙!vscode 笨重....
PHP+MYSQL 可以满足普通业务 99%需求.
102 天前
回复了 huangliu 创建的主题 程序员 我和 Tiny RDM 一起勇敢迈向了 1.2 版本
我最近也在用你的 Tiny RDM 之前用一个其他国产的,发现你的更友好点.~
105 天前
回复了 ninblue 创建的主题 浏览器 为什么现在 360 极速浏览器不支持 Adblock 了
Adblock 早不支持油管了,差评!~
106 天前
回复了 fuyun 创建的主题 Node.js 纯真 IP 数据库解析 Node.js 版
Python 版我写好了
```
# -*- coding: UTF-8 -*-

import socket
import struct


class CzIp:

def __init__(self, db_file="qqwry2024-08-28.dat"): # db_file="qqwry.dat"
self.f_db = open(db_file, "rb")
bs = self.f_db.read(8)
(self.first_index, self.last_index) = struct.unpack("II", bs)
self.index_count = int((self.last_index - self.first_index) / 7 + 1)
self.cur_start_ip = None
self.cur_end_ip_offset = None
self.cur_end_ip = None
print(self.get_version(), " 记录总数: %d 条 " % (self.index_count))

def get_version(self):
"""
获取版本信息,最后一条 IP 记录 255.255.255.0-255.255.255.255 是版本信息
:return: str
"""
s = self.get_addr_by_ip(0xFFFFFF00)
return s

def _get_area_addr(self, offset=0):
if offset:
self.f_db.seek(offset)
bs = self.f_db.read(1)
(byte,) = struct.unpack("B", bs)
if byte == 0x01 or byte == 0x02:
p = self.getLong3()
if p:
return self.get_offset_string(p)
else:
return ""
else:
self.f_db.seek(-1, 1)
return self.get_offset_string(offset)

def _get_addr(self, offset):
"""
获取 offset 处记录区地址信息(包含国家和地区)
如果是中国 ip ,则是 "xx 省 xx 市 xxxxx 地区" 这样的形式
(比如:"福建省 电信", "澳大利亚 墨尔本 Goldenit 有限公司")
:param offset:
:return:str
"""
self.f_db.seek(offset + 4)
bs = self.f_db.read(1)
(byte,) = struct.unpack("B", bs)
if byte == 0x01: # 重定向模式 1
country_offset = self.getLong3()
self.f_db.seek(country_offset)
bs = self.f_db.read(1)
(b,) = struct.unpack("B", bs)
if b == 0x02:
country_addr = self.get_offset_string(self.getLong3())
self.f_db.seek(country_offset + 4)
else:
country_addr = self.get_offset_string(country_offset)
area_addr = self._get_area_addr()
elif byte == 0x02: # 重定向模式 2
country_addr = self.get_offset_string(self.getLong3())
area_addr = self._get_area_addr(offset + 8)
else: # 字符串模式
country_addr = self.get_offset_string(offset + 4)
area_addr = self._get_area_addr()
return country_addr + " " + area_addr

def dump(self, first, last):
"""
打印数据库中索引为 first 到索引为 last(不包含 last)的记录
:param first:
:param last:
:return:
"""
if last > self.index_count:
last = self.index_count
for index in range(first, last):
offset = self.first_index + index * 7
self.f_db.seek(offset)
buf = self.f_db.read(7)
(ip, of1, of2) = struct.unpack("IHB", buf)
address = self._get_addr(of1 + (of2 << 16))
print("%d %s %s" % (index, self.ip2str(ip), address))

def _set_ip_range(self, index):
offset = self.first_index + index * 7
self.f_db.seek(offset)
buf = self.f_db.read(7)
(self.cur_start_ip, of1, of2) = struct.unpack("IHB", buf)
self.cur_end_ip_offset = of1 + (of2 << 16)
self.f_db.seek(self.cur_end_ip_offset)
buf = self.f_db.read(4)
(self.cur_end_ip,) = struct.unpack("I", buf)

def get_addr_by_ip(self, ip):
"""
通过 ip 查找其地址
:param ip: (int or str)
:return: str
"""
if type(ip) == str:
ip = self.str2ip(ip)
L = 0
R = self.index_count - 1
while L < R - 1:
M = int((L + R) / 2)
self._set_ip_range(M)
if ip == self.cur_start_ip:
L = M
break
if ip > self.cur_start_ip:
L = M
else:
R = M
self._set_ip_range(L)
# version information, 255.255.255.X, urgy but useful
if ip & 0xFFFFFF00 == 0xFFFFFF00:
self._set_ip_range(R)
if self.cur_start_ip <= ip <= self.cur_end_ip:
address = self._get_addr(self.cur_end_ip_offset)
else:
address = "未找到该 IP 的地址"
return address

def get_ip_range(self, ip):
"""
返回 ip 所在记录的 IP 段
:param ip: ip(str or int)
:return: str
"""
if type(ip) == str:
ip = self.str2ip(ip)
self.get_addr_by_ip(ip)
range = self.ip2str(self.cur_start_ip) + " - " + self.ip2str(self.cur_end_ip)
return range

def get_offset_string(self, offset=0):
"""
获取文件偏移处的字符串(以'\0'结尾)
:param offset: 偏移
:return: str
"""
if offset:
self.f_db.seek(offset)
bs = b""
ch = self.f_db.read(1)
(byte,) = struct.unpack("B", ch)
while byte != 0:
bs += ch
ch = self.f_db.read(1)
(byte,) = struct.unpack("B", ch)
return bs.decode("gbk")

def ip2str(self, ip):
"""
整数 IP 转化为 IP 字符串
:param ip:
:return:
"""
return str(ip >> 24) + "." + str((ip >> 16) & 0xFF) + "." + str((ip >> 8) & 0xFF) + "." + str(ip & 0xFF)

def str2ip(self, s):
"""
IP 字符串转换为整数 IP
:param s:
:return:
"""
(ip,) = struct.unpack("I", socket.inet_aton(s))
return ((ip >> 24) & 0xFF) | ((ip & 0xFF) << 24) | ((ip >> 8) & 0xFF00) | ((ip & 0xFF00) << 8)

def getLong3(self, offset=0):
"""
3 字节的数值
:param offset:
:return:
"""
if offset:
self.f_db.seek(offset)
bs = self.f_db.read(3)
(a, b) = struct.unpack("HB", bs)
return (b << 16) + a


if __name__ == "__main__":
# todo:纯真 IP 库解析
cz = CzIp()
# print(cz.get_version())
ip = "8.8.8.8"
print(cz.get_ip_range(ip))
print(cz.get_addr_by_ip(ip))
print("====")
ip = "125.129.173.203"
print(cz.get_ip_range(ip))
print(cz.get_addr_by_ip(ip))
```
106 天前
回复了 fuyun 创建的主题 Node.js 纯真 IP 数据库解析 Node.js 版
不错,待会我整个 Python 版的。
@airingursb 我 22 年从 intel 的 MacBook 升级 M1 pro 的 MacBook 的时候,QQ 音乐一直在这个 app 自己的 logs 文件夹里报错,我当时联系了你们 QQ 音乐官方 QQ 客服,让我把日志打包给他,他看了后说提交到技术部了,1 个月后更新了 2 次后还这样我在问他,回复跟我说这个报错涉及到了公司其他部门开发的模块上,让我在等等,3 个月后没解决,6 个月后没解决,直到 1 年后 QQ 音乐 macos 端把错误日志竟然换了个地方储存也没解决,现在 2 年多了,这个错误日志依旧,每天会生产几十 M 的错误日志.对国内数一数二的软件公司而言真的不应该.
说白了就各方面待遇,福利不如从前了.
113 天前
回复了 noconfuse 创建的主题 程序员 2 年独立开发,我要去吃土了
个人开发者的红利期是 2006-2015 年,不接受任何反驳!现在还有人做个人开发者不是脑残就是自以为是的人,有极少成功的,但肯定不是你。
1  2  3  4  5  6  7  8  9  10 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5793 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 01:42 · PVG 09:42 · LAX 17:42 · JFK 20:42
Developed with CodeLauncher
♥ Do have faith in what you're doing.