- Deepspeed 结合huggingface Trainer实现多机分布式训练
ningzhao
分布式
目前工作中只使用了单机多卡做微调训练,为了提升训练效率,特实验多机多卡分布式训练。一、环境准备本试验使用两台机器(manager,worker),操作系统ubuntu22.4,每台机器有4个GPU为了使安装配置统一,使用docker容器,docker的安装这里不做介绍。1.网络配置-创建overlay共享网络初始化集群,在manager机器上运行:dockerswarminit#输出结果:Swar
- ubuntu 16(7)
2401_84715880
单元测试功能测试学习
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!conf:存放配置文件html:静态网页logs:存
- Ubuntu 16.04安装Java JDK
一杯茶一本书
JavaJDK有两个版本,一个开源版本Openjdk,还有一个oracle官方版本jdk。下面记录在Ubuntu16.04上安装JavaJDK的步骤。安装openjdk的步骤更新软件包列表:sudoapt-getupdate安装openjdk-8-jdk:sudoapt-getinstallopenjdk-8-jdk查看java版本:java-version安装oracleJavaJDK首先,安装
- Linux-------基础
Pluto & Ethereal
linux运维服务器
目录一、基础1、Linux的特点:2、UbuntuLinux的特点:3、用户切换的命令4、常用命令一、基础1、Linux的特点:开放性、安全性、多用户性、网络性2、UbuntuLinux的特点:1、拥有完整图形化界面,是面向普通用户对象,比较容易上手2、安装UbuntuLinux会自带unity桌面环境,操作方便3、用户切换的命令su用户名切换到对应的用户sudo-i切换到root(超级管理员)4
- windows11 wsl2 ubuntu20.04安装vision mamba并进行测试
一剑斩蛟龙
人工智能深度学习图像处理计算机视觉python机器学习pytorch
windows11wsl2ubuntu20.04安装visionmamba安装流程使用cifar-100测试安装成功安装流程visionmamba安装了半天才跑通,记录一下流程在wsl上安装cudawgethttps://developer.download.nvidia.cn/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_l
- Ubuntu20.04使用systemd配置Gogs开机启动
海上微风
LinuxUbuntu20.04Gogssystemd开机启动Gogs启动失败
先说现象,大家用sudosystemctlstartgogs是不是和我一样?ubuntu@raspberry-pi:~$sudosystemctlstatusgogs●gogs.service-GogsLoaded:loaded(/lib/systemd/system/gogs.service;enabled;vendorpreset:enabled)Active:failed(Result:ex
- ubuntu配置samba在win10访问
axk0909
ubuntu服务器linux
买了个云服务器,想在win上直接访问,先弄个sambaSamba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(ServerMessagesBlock,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。1在ubuntu安装sambasudoapt-getinstallsamba2编
- samba实现ubuntu与Windows10间的文件共享
C_YouShao
开发工具相关随笔ubuntulinux服务器vim
samba实现ubuntu与Windows间的文件共享的配置记录本文简单记录用samba服务器实现的Windows10系统与基于VMware的Ubuntu系统之间文件共享的配置方法,配置完成后就可以实现Windows和Linux跨平台编译代码、文件互传等操作。配置过程概括如下:Ubuntu命令行安装samba配置smb.conf文件创建共享目录并为其设置访问权限获取Ubuntu中共享目录的ip地址
- linux访问外网的设置
错误重复学习记录
linux运维服务器
Ubuntu|LUCKFOXWIKI开发板配置添加路由信息sudorouteadddefaultgw172.32.0.100添加DNSservers打开文件sudovi/etc/resolv.conf添加以下内容:nameserver8.8.8.8联网测试pingwww.baidu.com开机自动配置路由信息和DNSservers重启后会被清除,我们创建一个脚本开机后自动帮我们完成配置cd/etc
- 【C-实践】一对一的网络通信(1.0)
轩轶子
#C语言实践c语言开发语言
概述使用tcp+select实现的C/S远程通信功能服务器只能与单一的客户端进行信息交互如果服务器连接了多个客户端,由于是单一进程无法同时对多个客户端回复,但可以群发信息启动启动服务器1、在bin目录下生成可执行文件w@Ubuntu20:bin$gcc../src/*.c-oserver2、启动服务器w@Ubuntu20:bin$./server../conf/server.conf启动客户端1、
- 如何在Ubuntu 16.04上使用Let‘s Encrypt保护Apache2
JKooll
sharecodeubuntulet'sencryptapachehttps
原文:https://zhaoshuquan.com/posts/如何在ubuntu-16.04上使用lets-encrypt保护apache2/介绍本教程将向您展示如何在运行Apache作为Web服务器的Ubuntu16.04服务器上设置Let’sEncrypt的TLS/SSL证书。Web服务器中使用SSL证书来加密服务器和客户端之间的流量,为访问应用程序的用户提供额外的安全性。让我们的加密提供
- 安装tree命令 - linux和mac下
android121
centOS下的安装:yum-yinstalltreeUbuntu下安装:sudoapt-getinstalltree命令的使用:tree或者tree-a//显示当前目录下的所有文件和子文件tree-f//在每个文件或目录之前,显示完整的相对路径名称mac下:第一种:1、直接使用find命令模拟出tree命令的效果,如显示当前目录的tree的命令:find.-print|sed-e's;[^/]*
- Ubuntu安装Mysql最新版本
心之所想,行则将至
ubuntulinux运维
目录1.更新列表2.安装mysql命令3.安装完成之后Mysql会自动启动,直接进入mysql命令行界面,默认无密码4.进入之后,使用命令修改密码5.更新权限6.卸载mysql,先暂停mysql服务7.卸载mysql相关软件包8.移除mysql相关配置9.移除mysql相关数据文件10.清理剩余的依赖包1.更新列表sudoapt-getupdate2.安装mysql命令apt-getinstall
- 新的Ubuntu服务器如何启用root账号和配置静态ip以及开启ssh服务
jjw_zyfx
配置服务器ubuntussh
1、首先启用root账号1、先用默认账户登录进服务器2、使用命令启用root账号sudopasswdroot3、输入以上命令并回车后会让重新输入root账号密码重新设置root账户密码即可。4、切换到root账号suroot5、输入刚才设置的root账号密码并回车,此时可以看到用户已经更改为root2、配置静态IP1、在root账号下使用vim打开/etc/netplan/00-installer
- Ubuntu的ssh
请不要问我是谁
安装sshsudoapt-getupdatesudoapt-getinstallopenssh-server检测ssh是否启动sudops-e|grepssh创建root用户sudopasswdroot配置本机无密码ssh登录cd/home/spark0ssh-keygen-trsa-P""cat.ssh/id_rsa.pub>>.ssh/authorized_keyschmod600.ssh/a
- ubuntu18.04将python默认启动anaconda虚拟环境下的python版本改为 系统环境下的python
徐岸轩
pythonubuntu
1.问题描述起因就是我在ubuntu18.04中终端键入python想启用python3.8结果他老是启用anaconda虚拟环境下的python3.7。2.解决方案nano~/.bashrc如果没有nano,就gedit~/.bashrc在第一行加上exportPATH="/usr/bin:$PATH"然后保存退出最后source~/.bashrc此时键入python应该就是启用的系统环境下的p
- Ubuntu22 CMake安装使用教程
小朱在敲代码
linuxc++c语言ubuntu
1.CMake简介CMake是一个跨平台的自动化构建系统工具,它被用来管理和控制软件构建过程。CMake使用一个称为CMakeLists.txt的文本文件来描述项目的构建过程。这个文件包含了项目所需的各种设置和指令,比如源文件的位置、编译选项、链接器选项等。CMake并不是一个编译器,而是一个前端工具,它可以生成不同构建系统的脚本,如UnixMakefiles、Ninjabuildfiles、MS
- linux快速删除大量目录,Linux 快速删除大量小文件方法
摸鱼的月鸪
linux快速删除大量目录
当我们在linux系统中要删除数万或者数十万甚至数百万的文件时使用rm-rf*就不太好用,因为要等待很长一段时间。在这种情况之下我们可以使用linux系统命令rsync来巧妙的处理。rsync实际上用的是替换原理,处理数十万个文件也是秒删。1.rsync安装,有些系统默认安装有该命令Ubuntu系统:sudoapt-getinstallrsyncFedora系统:sudoyuminstallrsy
- Linux 递归删除大量的文件
爱吃瓜的猹z
Linux数据库
一般情况下在Ubuntu中,递归删除大量文件和文件夹可以通过以下几种方式快速完成。常用的方法是使用rm命令,配合一些适当的选项来提高删除速度和效率。1.使用rm命令递归删除最常见的方式是使用rm命令的递归选项-r来删除目录及其所有内容。rm-rf/path/to/directory-r:递归删除目录中的所有文件和子目录。-f:强制删除,即使文件是只读的或不提示确认。2.提高删除速度的技巧在某些情况
- 【高效办公】三、两台电脑共享鼠标、键盘和文件,两台电脑当一个用的神操作!barrier
Op_chaos
计算机技巧计算机外设
1.下载ubuntu: sudoaptinstallbarrierwindows: https://github.com/debauchee/barrier/releases -下载:2.4.0-Assets-BarrierSetup-2.4.0-release.exe 2.运行ubuntu: sudoaptinstallbarrierwindows: https://g
- Ubuntu: 配置OpenCV环境
达柳斯·绍达华·宁
ubuntuopencvlinux
从从Ubuntu系统安装opencv_ubuntu安装opencv-CSDN博客文章浏览阅读2.3k次,点赞4次,收藏14次。开源计算机视觉(OpenCV)是一个主要针对实时计算机视觉的编程函数库。OpenCV的应用领域包括:2D和3D功能工具包、运动估计、面部识别系统、手势识别、人机交互、移动机器人、动作理解、物体识别、分割和识别、实体影像立体视觉:来自两个摄像机的深度感知、运动跟踪、增强现实等
- Ubuntu中安装Maven
不爱开发的干饭人
ubuntulinux运维
1.更新源列表sudoaptupdate2.安装sudoaptinstallmaven3.验证mvn-v4.配置阿里源用下列setting文件替换/usr/share/maven/conf下的settings.xml/path/to/local/repo-->true-->false-->com.your.plugins-->optionaltruehttpproxyuserproxypasspr
- Ubuntu中安装RabbitMQ
不爱开发的干饭人
ubunturabbitmqlinux
1.安装sudoaptinstallrabbitmq-server2.检查状态systemctlstatusrabbitmq-server#检查状态servicerabbitmq-serverstatus#检查状态3.开启Web管理sudorabbitmq-pluginsenablerabbitmq_management4.打开浏览器输入网址http://localhost:15672#用默认gu
- Ubuntu 安装 Docker
不爱开发的干饭人
docker容器运维
1、卸载旧版本旧版本的Docker称为docker或者docker-engine,使用以下命令卸载旧版本:sudoapt-getremovedocker\docker-engine\docker.io2、使用APT安装由于apt源使用HTTPS以确保软件下载过程中不被篡改。因此,我们首先需要添加使用HTTPS传输的软件包以及CA证书。sudoapt-getupdatesudoapt-getinst
- ubantu安装mysql + redis数据库并使用C/C++操作数据库
桐人,奥龙
数据库mysqlredis
mysql安装mysqlubuntu安装MySql_ubuntu安装mysql-CSDN博客Ubuntu安装MySQL密码设置_ubuntu安装mysql后设置密码-CSDN博客servicemysqlrestart1C/C++连接数据库C/C++连接访问MySQL数据库_c++mysql-CSDN博客ubuntu安装mysql的c++开发环境_ubuntu搭建mysqlc++开发环境-CSDN博
- 超详细:如何在windous系统下使用wsl虚拟机安装Ubuntu
萌褚
file镜像下载、域名解析、时间同步请点击阿里云开源镜像站前情提要:该方法只适用于Windows10以上版本,Ubuntu直接可在微软商店安装在这个网页docs.microsoft.com/zh-cn/windo…可以设置完成前5部,然后根据下面具体操作。ps:1.在连接中我们要打开powershell,一定要以管理员方式运行2.在第4部,有安装wsl2的链接3.在第5部,将wsl2设为默认版本在
- Docker学习笔记
Hi,你好啊
运维docker学习笔记
文章目录Docker的基本概念容器的概念容器的特点容器与虚拟机的区别容器的三个核心概念Docker的底层隔离机制NameSpaceCgroupUnion文件系统Linux安装DockerCentOSUbuntuDocker基本命令Docker限制容器资源Docker中的网络Docker网络模式Docker网络配置Docker中的卷挂载文件系统到容器Docker镜像Docker镜像的特点Docker
- 【LINUX】阿里云linux服务器上使用iptables设置安全策略的方法_status=$(grep -i ubuntu etc issue)
2401_85154737
linux服务器阿里云
yuminstall-yiptablesiptables安装好后就可以来配置规则了。由于作为web服务器来使用,所以对外要开放80端口,另外肯定要通过ssh进行服务器管理,22端口也要对外开放,当然最好是把ssh服务的默认端口改掉,在公网上会有很多人试图破解密码的,如果修改端口,记得要把该端口对外开发,否则连不上就悲剧了。下面提供配置规则的详细说明:第一步:清空所有规则当ChainINPUT(po
- Docker编译环境的使用(ubuntu)
伍六七0804
dockerubuntu容器
目录Ubuntu安装docker重启docker拉取镜像进入docker安装软件提交docker添加用户到docker组进入docker添加build用户停止容器保存docker镜像load镜像删除容器Ubuntu安装dockersudoaptinstalldocker.io国内可用的源Welcometonginx!(tencentyun.com)https://ccr.ccs.tencentyu
- VMware中安装 Ubuntu ,实现 Windows 和 Ubuntu 之间自由复制粘贴
让梦想疯狂
UbuntuLinuxubuntulinux运维
VMware中安装Ubuntu24.04系统后发现与Windows系统不能自由复制粘贴,实现Windows和Ubuntu之间自由复制粘贴的方法如下:执行以下命令sudoapt-getautoremoveopen-vm-toolssudoapt-getinstallopen-vm-toolssudoapt-getinstallopen-vm-tools-desktop重启ubuntu
- ASM系列四 利用Method 组件动态注入方法逻辑
lijingyao8206
字节码技术jvmAOP动态代理ASM
这篇继续结合例子来深入了解下Method组件动态变更方法字节码的实现。通过前面一篇,知道ClassVisitor 的visitMethod()方法可以返回一个MethodVisitor的实例。那么我们也基本可以知道,同ClassVisitor改变类成员一样,MethodVIsistor如果需要改变方法成员,注入逻辑,也可以
- java编程思想 --内部类
百合不是茶
java内部类匿名内部类
内部类;了解外部类 并能与之通信 内部类写出来的代码更加整洁与优雅
1,内部类的创建 内部类是创建在类中的
package com.wj.InsideClass;
/*
* 内部类的创建
*/
public class CreateInsideClass {
public CreateInsideClass(
- web.xml报错
crabdave
web.xml
web.xml报错
The content of element type "web-app" must match "(icon?,display-
name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,s
- 泛型类的自定义
麦田的设计者
javaandroid泛型
为什么要定义泛型类,当类中要操作的引用数据类型不确定的时候。
采用泛型类,完成扩展。
例如有一个学生类
Student{
Student(){
System.out.println("I'm a student.....");
}
}
有一个老师类
- CSS清除浮动的4中方法
IT独行者
JavaScriptUIcss
清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近。CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受。
1、结尾处加空div标签 clear:both 1 2 3 4
.div
1
{
background
:
#000080
;
border
:
1px
s
- Cygwin使用windows的jdk 配置方法
_wy_
jdkwindowscygwin
1.[vim /etc/profile]
JAVA_HOME="/cgydrive/d/Java/jdk1.6.0_43" (windows下jdk路径为D:\Java\jdk1.6.0_43)
PATH="$JAVA_HOME/bin:${PATH}"
CLAS
- linux下安装maven
无量
mavenlinux安装
Linux下安装maven(转) 1.首先到Maven官网
下载安装文件,目前最新版本为3.0.3,下载文件为
apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令;
2.进入下载文件夹,找到下载的文件,运行如下命令解压
tar -xvf apache-maven-2.2.1-bin.tar.gz
解压后的文件夹
- tomcat的https 配置,syslog-ng配置
aichenglong
tomcathttp跳转到httpssyslong-ng配置syslog配置
1) tomcat配置https,以及http自动跳转到https的配置
1)TOMCAT_HOME目录下生成密钥(keytool是jdk中的命令)
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit
- 关于领号活动总结
alafqq
活动
关于某彩票活动的总结
具体需求,每个用户进活动页面,领取一个号码,1000中的一个;
活动要求
1,随机性,一定要有随机性;
2,最少中奖概率,如果注数为3200注,则最多中4注
3,效率问题,(不能每个人来都产生一个随机数,这样效率不高);
4,支持断电(仍然从下一个开始),重启服务;(存数据库有点大材小用,因此不能存放在数据库)
解决方案
1,事先产生随机数1000个,并打
- java数据结构 冒泡排序的遍历与排序
百合不是茶
java
java的冒泡排序是一种简单的排序规则
冒泡排序的原理:
比较两个相邻的数,首先将最大的排在第一个,第二次比较第二个 ,此后一样;
针对所有的元素重复以上的步骤,除了最后一个
例题;将int array[]
- JS检查输入框输入的是否是数字的一种校验方法
bijian1013
js
如下是JS检查输入框输入的是否是数字的一种校验方法:
<form method=post target="_blank">
数字:<input type="text" name=num onkeypress="checkNum(this.form)"><br>
</form>
- Test注解的两个属性:expected和timeout
bijian1013
javaJUnitexpectedtimeout
JUnit4:Test文档中的解释:
The Test annotation supports two optional parameters.
The first, expected, declares that a test method should throw an exception.
If it doesn't throw an exception or if it
- [Gson二]继承关系的POJO的反序列化
bit1129
POJO
父类
package inheritance.test2;
import java.util.Map;
public class Model {
private String field1;
private String field2;
private Map<String, String> infoMap
- 【Spark八十四】Spark零碎知识点记录
bit1129
spark
1. ShuffleMapTask的shuffle数据在什么地方记录到MapOutputTracker中的
ShuffleMapTask的runTask方法负责写数据到shuffle map文件中。当任务执行完成成功,DAGScheduler会收到通知,在DAGScheduler的handleTaskCompletion方法中完成记录到MapOutputTracker中
- WAS各种脚本作用大全
ronin47
WAS 脚本
http://www.ibm.com/developerworks/cn/websphere/library/samples/SampleScripts.html
无意中,在WAS官网上发现的各种脚本作用,感觉很有作用,先与各位分享一下
获取下载
这些示例 jacl 和 Jython 脚本可用于在 WebSphere Application Server 的不同版本中自
- java-12.求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
bylijinnan
switch
借鉴网上的思路,用java实现:
public class NoIfWhile {
/**
* @param args
*
* find x=1+2+3+....n
*/
public static void main(String[] args) {
int n=10;
int re=find(n);
System.o
- Netty源码学习-ObjectEncoder和ObjectDecoder
bylijinnan
javanetty
Netty中传递对象的思路很直观:
Netty中数据的传递是基于ChannelBuffer(也就是byte[]);
那把对象序列化为字节流,就可以在Netty中传递对象了
相应的从ChannelBuffer恢复对象,就是反序列化的过程
Netty已经封装好ObjectEncoder和ObjectDecoder
先看ObjectEncoder
ObjectEncoder是往外发送
- spring 定时任务中cronExpression表达式含义
chicony
cronExpression
一个cron表达式有6个必选的元素和一个可选的元素,各个元素之间是以空格分隔的,从左至右,这些元素的含义如下表所示:
代表含义 是否必须 允许的取值范围 &nb
- Nutz配置Jndi
ctrain
JNDI
1、使用JNDI获取指定资源:
var ioc = {
dao : {
type :"org.nutz.dao.impl.NutDao",
args : [ {jndi :"jdbc/dataSource"} ]
}
}
以上方法,仅需要在容器中配置好数据源,注入到NutDao即可.
- 解决 /bin/sh^M: bad interpreter: No such file or directory
daizj
shell
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
解决:
1)在windows下转换:
利用一些编辑器如UltraEdit或EditPlus等工具
- [转]for 循环为何可恨?
dcj3sjt126com
程序员读书
Java的闭包(Closure)特征最近成为了一个热门话题。 一些精英正在起草一份议案,要在Java将来的版本中加入闭包特征。 然而,提议中的闭包语法以及语言上的这种扩充受到了众多Java程序员的猛烈抨击。
不久前,出版过数十本编程书籍的大作家Elliotte Rusty Harold发表了对Java中闭包的价值的质疑。 尤其是他问道“for 循环为何可恨?”[http://ju
- Android实用小技巧
dcj3sjt126com
android
1、去掉所有Activity界面的标题栏
修改AndroidManifest.xml 在application 标签中添加android:theme="@android:style/Theme.NoTitleBar"
2、去掉所有Activity界面的TitleBar 和StatusBar
修改AndroidManifes
- Oracle 复习笔记之序列
eksliang
Oracle 序列sequenceOracle sequence
转载请出自出处:http://eksliang.iteye.com/blog/2098859
1.序列的作用
序列是用于生成唯一、连续序号的对象
一般用序列来充当数据库表的主键值
2.创建序列语法如下:
create sequence s_emp
start with 1 --开始值
increment by 1 --増长值
maxval
- 有“品”的程序员
gongmeitao
工作
完美程序员的10种品质
完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的
完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:
1. 才智非凡- 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力强
(范围:用简单方式解决复杂问题)
- 使用KeleyiSQLHelper类进行分页查询
hvt
sql.netC#asp.nethovertree
本文适用于sql server单主键表或者视图进行分页查询,支持多字段排序。KeleyiSQLHelper类的最新代码请到http://hovertree.codeplex.com/SourceControl/latest下载整个解决方案源代码查看。或者直接在线查看类的代码:http://hovertree.codeplex.com/SourceControl/latest#HoverTree.D
- SVG 教程 (三)圆形,椭圆,直线
天梯梦
svg
SVG <circle> SVG 圆形 - <circle>
<circle> 标签可用来创建一个圆:
下面是SVG代码:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" c
- 链表栈
luyulong
java数据结构
public class Node {
private Object object;
private Node next;
public Node() {
this.next = null;
this.object = null;
}
public Object getObject() {
return object;
}
public
- 基础数据结构和算法十:2-3 search tree
sunwinner
Algorithm2-3 search tree
Binary search tree works well for a wide variety of applications, but they have poor worst-case performance. Now we introduce a type of binary search tree where costs are guaranteed to be loga
- spring配置定时任务
stunizhengjia
springtimer
最近因工作的需要,用到了spring的定时任务的功能,觉得spring还是很智能化的,只需要配置一下配置文件就可以了,在此记录一下,以便以后用到:
//------------------------定时任务调用的方法------------------------------
/**
* 存储过程定时器
*/
publi
- ITeye 8月技术图书有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的8月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
8月试读活动回顾:
http://webmaster.iteye.com/blog/2102830
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《跨终端Web》
gleams:http