- 2018-08-16【Swift 4.1】 关于Swift4.0以后调用MJExtension无法模型转换问题
码农happy
1、本人使用swift4.1,弄了一晚上才弄好,结果还是一个小问题真是尴尬,要在model中每个属性前面加上@objcimportUIKitclassUserModel:NSObject{@objcvardix=String()}letdic=["dix":"ffffff"]asNSDictionaryletmodel=UserModel.mj_object(withKeyValues:dic)!
- Swift4.0: 利用图形上下文画基础图?
Dayu大鱼
步骤:开启图片上下文获取上下文配置上下文3.1填充颜色cgColor3.2填充尺寸从图形上下文中获取图片关闭上下文返回图片importFoundationimportUIKitextensionUIImage{///画一个白色背景的图片classfuncimageWithWhiteBackGroundColor()->UIImage{//开始图形上下文UIGraphicsBeginImageCon
- swift和python语法区别_Swift 基本语法
碧色将逝
Swift基本语法在上一章节中我们已经讲到如何创建Swift语言的"Hello,World!"程序。现在我们来复习下。如果创建的是OSXplayground需要引入Cocoa:importCocoa/*我的第一个Swift程序*/varmyString="Hello,World!"print(myString)如果我们想创建iOSplayground则需要引入UIKit:importUIKitva
- IOS 动画 动态变换背景色和大小
SkTj
1importUIKit23classViewController:UIViewController{45overridefuncviewDidLoad(){6super.viewDidLoad()7//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.8letrect=CGRect(x:40,y:80,width:240,heig
- Wonder Dynamics——虚拟角色动画和实时互动生成
爱研究的小牛
实时互动
一、WonderDynamics介绍WonderDynamics的核心是通过AI驱动的自动化流程,简化和加速虚拟角色动画的制作。其主要功能包括:自动化角色动画:将预录制的动作捕捉数据自动应用到虚拟角色上。实时角色互动:实现虚拟角色与现实场景中的人物和物体实时互动。高精度捕捉和渲染:利用深度学习和计算机视觉技术,捕捉高精度的动作数据并生成高质量的动画。二、WonderDynamics实现技术详解Wo
- 关于 CustomStringConvertible 协议
MMD_
print语句输出的内容只是这个结构的名称,这显然不是我们希望的结果,我们更多情况下需要的是它能够输出Music实例的内容。我们来修改一下Music类的定义,让它实现CustomStringConvertible协议:importUIKitstructMusic{letname:Stringletsinger:Stringinit(name:String,singer:String){self.n
- Swift实时监听判断是否连接有网络WIFI和蜂窝数据
Aftery的博客
swift网络ios
本章节讲解如何使用swift连接网络,实时的监听到网络的状态,在主界面中进行调用,网络包含Wi-Fi和蜂窝。1.封装一个判断是否有网络的类2.在封装类注册通知3.主界面接收注册通知,并且调用封装的网络类4.成功测试,有网络为true,否则false一:AllExpanded类importUIKitimportWHToastimportMBProgressHUDimportSystemConfigu
- IOS 12 自定义用户协议对话框
sziitjin
IOSios
实现效果实现逻辑本文使用QMUI里面提供的控制器+自定义控件实现。添加依赖#腾讯开源的UI框架,提供了很多功能,例如:圆角按钮,空心按钮,TextView支持placeholder#https://github.com/QMUI/QMUIDemo_iOS#https://qmuiteam.com/ios/get-startedpod"QMUIKit"还不了解如何使用CocoaPods管理依赖的,建
- IOS开发0基础入门UIkit-3--实现一个高度自适应的UILabel和一个宽度自适应的UILabel
Z编程
ios-UIkit入门ios
1.实现一个高度自适应的UILable思路:UILabel初始化之后,先不要设置他的宽度和高度,等到设置好text属性和font属性之后,根据text的长度以及font的大小来计算UILabel控件的高度//实现一个高度自适应的uilabelUILabel*label2=[[UILabelalloc]init];label2.text=@"xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 较为实用的几种传值方法
雅风丶
最简单的AB面正向传值应用场景登录获取账号,昵称实现方法设置第一个界面首先在第一个界面创建好一个TextFeild,用来获取我们要传的文字importUIKitclassViewController:UIViewController{lettextField=UITextField()overridefuncviewDidLoad(){super.viewDidLoad()self.view.ba
- iOS总体框架介绍和详尽说明
诗雅颂
ios移动端框架苹果
iOS是由苹果公司开发的移动操作系统,为iPhone、iPad、iPodTouch等设备提供支持。iOS采用了基于Unix的核心(称为Darwin),并采用了类似于MacOSX的图形用户界面。以下是iOS的总体框架介绍和详尽说明:UIKit框架:UIKit是构建iOS应用程序用户界面的主要框架。它包括了各种视图控制器(如UITableViewController、UIViewController)
- main.m主函数介绍
frank_pang1995
整个App程序的主函数,入口函数intmain(intargc,char*argv[]){//自动内存释放池@autoreleasepool{//UIKit框架结构启动函数//参数一:argc,启动时带有参数的个数//参数二:argv,参数列表//参数三:要求传入一个主框架类对象,如果参数为nil,系统会自动用默认的框架类作为主框架类名//参数四:主框架的代理类对象returnUIApplicat
- Swift实现让文字从左上角开始显示(无论label的高度是多少)
闲云悠鹤蝶恋舞
实现步骤:step1:首先写一个继承自UILabel的类PatientInfoCustomLabel;step2:让所要实现该功能的label继承PatientInfoCustomLabel类即可。importUIKitclassPatientInfoCustomLabel:UILabel{overridefuncawakeFromNib(){super.awakeFromNib()}overri
- 写iOS程序时可以不用导入Foundation和UIKit框架的原因
iOS扫地僧
问题原因之前也没有想过这个问题,最近想研究一下音视频硬编码的一些问题,然后在看博客的时候,发现有人提出了,音频硬编码的时候#import这句引入头文件的代码去掉之后,代码可以照常编译运行,就质问博主写的是否是音频硬编码,下面就来解释一下,这是为什么?众所周知,Foundation和UIKit中定义了iOS中所有对象的基类,要想开发一个在iOS上运行的应用,就不可避免的使用它们,但曾几何时,写代码的
- iOS UICollectionView 详解
我会回来的
importUIKit////////ViewController.swift////test////////CreatedbyMacon2023/5/30.//////importUIKitclassViewController:UIViewController,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionVie
- SwiftUI TextField高级用法之限制文本TextField视图中的字符数
iCloudEnd
实战需求SwiftUITextField高级用法之限制文本TextField视图中的字符数有时,您需要限制用户可以在应用程序的输入字段中输入的字符数,例如,在实现邮政编码的输入时。在UIKit中,您可能熟悉textField方法来限制UIKitTextField的字符。SwiftUI中的TextField似乎缺少这种功能,因为它没有为我们提供完成此任务的回调或方法,但是仍然有解决此问题的方法-您只
- Waterfalling, Header Bidding and New Auction Dynamics
conan酱_563e
在在线广告的早期阶段,广告位的购买方式与平面广告的购买方式相同,即广告资源是以固定价格直接从publisher处购买的,通常以cost-per-mille(CPM)计费方式为基础。在20世纪90年代末和21世纪初期,出现了许多新的广告技术平台,如adnetwork,以帮助广告商在更多网站上展示广告,并允许publisher卖掉他们更多的广告位资源。然而,直到2007/2008,由于引入了实时出价(
- iOS - 为什么要在主线程中操作UI
Fat_Blog
在开发中,如果我们在后台线程中对UI进行操作,比如imageView.image=image;那么编译器就会弹出一个runtime错误,这时,我们只需要把这一行代码放到主线程中执行,那就可以解决问题了,但是为什么要在主线程中操作UI才是正确的呢?一般分为三个原因UIKit是一个线程不安全的类,UI操作涉及到渲染访问各种View对象的属性,如果异步操作下会存在读写问题,而为其加锁则会耗费大量资源并拖
- 融云 Global IM UIKit,灵活易用的即时通讯组件设计思路和最佳实践
(全网都在找的《社交泛娱乐出海作战地图》,点击获取)融云近期推出的GlobalIMUIKit,支持开发者高效满足海外用户交互体验需求,且保留了相当的产品张力赋予开发者更多自由和灵活性,是实现全球化社交组件的不二之选。关注【融云全球互联网通信云】了解更多GlobalIMUIKit采用“一键开关、二级重写、三级自定义”来扩充自定义能力,提升产品集成灵活性,更好支持业务层创新。一键开关:对于通用的、可枚
- 【深蓝学院】移动机器人运动规划--第4章 动力学约束下的运动规划--笔记
读书健身敲代码
motionplanningmotionplanningRobotics
0.Outline1.Introduction什么是kinodynamic?运动学(Kinematics)和动力学(Dynamics)都是力学的分支,涉及物体的运动,但它们研究的焦点不同。运动学专注于描述物体的运动,而不涉及运动的原因。它包括位置、速度、加速度等概念,并研究这些量之间的关系,以及它们如何随时间变化。运动学问题通常涉及计算物体在没有引力或其他力的作用下的理想运动。动力学则涉及力及其产
- Swift-UIKit-UILabel
Vicent_Z
1.描述classUILabel:UIViewUILabel继承自UIView苹果官方文档:Aviewthatdisplaysoneormorelinesofinformationaltext.(是一个描述一行或者多行文本信息的视图)UILabel支持展示属性字符串(attributedstrings).并且支持多行展示,如果设置好约束,还可以进行高度的自适应.UILabel大多通过NSStrin
- UI素材|最全面的移动端 UI KIT 模板
awayaya1
UI
什么是UI组件UI设计组件(UIKIT),直译过来就是用户界面成套元件,是界面设计常用控件或元件,「组」是设计元素的组合方式,「件」由不同的元件组成。组件的优势1、保证一致性Consistency与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。2、反馈用户Feedback控制反馈:通过界面
- iOS Swift 圆环进度条
rome753
截屏2022-03-07上午10.16.41.png用CAShapeLayer和UIBezierPath贝塞尔曲线实现,每次进度变化时,重新初始化一个CAShapeLayer添加到当前UIView上。importFoundationimportUIKitclassCircleProgressView:UIView{//灰色静态圆环varstaticLayer:CAShapeLayer!//进度可变
- swift4.2检查系统权限AuthorizationCheck.swift
lightandall
里面包括了弹窗,音频,相机,相册importAVFoundationimportUIKitimportPhotosimportMobileCoreServicesimportEventKitpublicclassAuthorizationCheck{//MARK:弹窗工具classfuncshowAlert(title:String?,msg:String?,goSetting:Bool){let
- IOS AVPlayViewController 实现视频播放的控制
SkTj
1importUIKit2importAVFoundation3importAVKit45classViewController:UIViewController{6overridefuncviewDidLoad(){7super.viewDidLoad()8//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.9letmovieP
- swift-改变UIAlertController文字的对齐方式
命运建筑师fly
需求:原生UIAlertController文字都只能居中显示,在有些时候,我们需要提示文字左对齐的呀,就需要用代码来修改了实现:定义importUIKit//用于UIAlertController的文字偏移varsubviews:[UIView]?extensionUIAlertController{varTJL_titleLabel:UILabel?{set{}get{ifTJL_viewAr
- Swift 闭包的使用
秋秋小事
Swift学习笔记ios
////ClosureUsage.swift//SwiftCode////CreatedbyAlisaon2020/10/10.//Copyright©2020Alisa.Allrightsreserved.//importUIKit//闭包的用法/*闭包:闭包是可以在你的代码中被传递和引用的功能独立代码块。Swift中的闭包和C以及Objective-C中的blocks很像,还有其他语言中的匿名
- 3.Swift学习之常量&变量
weixin_34402090
swift
什么是常量和变量在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量使用let来定义常量,定义之后不可以修改使用var来定义变量,定义之后可以修改变量的基本使用importUIKitleta:Int=10//报错——当一个字段定义为常量时不可以修改//a=20varb:Int=20//因为b定义为变量,因此是可以修改的b=30常量和变量的使用注意:注意:在真正的开发过程中,
- 3.Swift的常量与变量
yuxiaoyu.
swiftxcode
1.定义let定义常量,一经赋值不允许再修改建议使用,更加安全var定义变量,赋值之后仍然可以修改应该尽量先选择常量,只有在必须修改时,才需要修改为var在Xcode7.0中,如果没有修改变量,Xcode会提示修改为let代码演示importUIKitclassViewController:UIViewController{overridefuncviewDidLoad(){super.viewD
- Dynamics 365 分布式安装:产品密钥与安装的Microsoft Dynamics CRM版本不兼容
小小暴徒
microsoft
在服务器,点击“开始”,运行“regedit”,找到如下路径:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM”,如果没有“MSCRM”,则对项“Microsoft”点击右键,新建该子项。对项“MSCRM”点击右键,新建“DWORD(32-位)值”,输入“IgnoreChecks”。双击“IgnoreChecks”,修改值为“1”。再次运行安装检测,发现一样
- html
周华华
html
js
1,数组的排列
var arr=[1,4,234,43,52,];
for(var x=0;x<arr.length;x++){
for(var y=x-1;y<arr.length;y++){
if(arr[x]<arr[y]){
&
- 【Struts2 四】Struts2拦截器
bit1129
struts2拦截器
Struts2框架是基于拦截器实现的,可以对某个Action进行拦截,然后某些逻辑处理,拦截器相当于AOP里面的环绕通知,即在Action方法的执行之前和之后根据需要添加相应的逻辑。事实上,即使struts.xml没有任何关于拦截器的配置,Struts2也会为我们添加一组默认的拦截器,最常见的是,请求参数自动绑定到Action对应的字段上。
Struts2中自定义拦截器的步骤是:
- make:cc 命令未找到解决方法
daizj
linux命令未知make cc
安装rz sz程序时,报下面错误:
[root@slave2 src]# make posix
cc -O -DPOSIX -DMD=2 rz.c -o rz
make: cc:命令未找到
make: *** [posix] 错误 127
系统:centos 6.6
环境:虚拟机
错误原因:系统未安装gcc,这个是由于在安
- Oracle之Job应用
周凡杨
oracle job
最近写服务,服务上线后,需要写一个定时执行的SQL脚本,清理并更新数据库表里的数据,应用到了Oracle 的 Job的相关知识。在此总结一下。
一:查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行
- 多线程机制
朱辉辉33
多线程
转至http://blog.csdn.net/lj70024/archive/2010/04/06/5455790.aspx
程序、进程和线程:
程序是一段静态的代码,它是应用程序执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的
- web报表工具FineReport使用中遇到的常见报错及解决办法(一)
老A不折腾
web报表finereportjava报表报表工具
FineReport使用中遇到的常见报错及解决办法(一)
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。
1、address pool is full:
含义:地址池满,连接数超过并发数上
- mysql rpm安装后没有my.cnf
林鹤霄
没有my.cnf
Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在这儿有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于r
- Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题
aigo
root
原文:http://kindlefireforkid.com/how-to-setup-a-google-account-on-amazon-fire-tablet/
Step 4: Run ADB command from your PC
On the PC, you need install Amazon Fire ADB driver and instal
- javascript 中var提升的典型实例
alxw4616
JavaScript
// 刚刚在书上看到的一个小问题,很有意思.大家一起思考下吧
myname = 'global';
var fn = function () {
console.log(myname); // undefined
var myname = 'local';
console.log(myname); // local
};
fn()
// 上述代码实际上等同于以下代码
m
- 定时器和获取时间的使用
百合不是茶
时间的转换定时器
定时器:定时创建任务在游戏设计的时候用的比较多
Timer();定时器
TImerTask();Timer的子类 由 Timer 安排为一次执行或重复执行的任务。
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定
- JDK1.5 Queue
bijian1013
javathreadjava多线程Queue
JDK1.5 Queue
LinkedList:
LinkedList不是同步的。如果多个线程同时访问列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方
- http认证原理和https
bijian1013
httphttps
一.基础介绍
在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后
- 【Java范型五】范型继承
bit1129
java
定义如下一个抽象的范型类,其中定义了两个范型参数,T1,T2
package com.tom.lang.generics;
public abstract class SuperGenerics<T1, T2> {
private T1 t1;
private T2 t2;
public abstract void doIt(T
- 【Nginx六】nginx.conf常用指令(Directive)
bit1129
Directive
1. worker_processes 8;
表示Nginx将启动8个工作者进程,通过ps -ef|grep nginx,会发现有8个Nginx Worker Process在运行
nobody 53879 118449 0 Apr22 ? 00:26:15 nginx: worker process
- lua 遍历Header头部
ronin47
lua header 遍历
local headers = ngx.req.get_headers()
ngx.say("headers begin", "<br/>")
ngx.say("Host : ", he
- java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。
bylijinnan
java
import java.util.Arrays;
public class MinSumASumB {
/**
* Q32.有两个序列a,b,大小都为n,序列元素的值任意整数,无序.
*
* 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
* 例如:
* int[] a = {100,99,98,1,2,3
- redis
开窍的石头
redis
在redis的redis.conf配置文件中找到# requirepass foobared
把它替换成requirepass 12356789 后边的12356789就是你的密码
打开redis客户端输入config get requirepass
返回
redis 127.0.0.1:6379> config get requirepass
1) "require
- [JAVA图像与图形]现有的GPU架构支持JAVA语言吗?
comsci
java语言
无论是opengl还是cuda,都是建立在C语言体系架构基础上的,在未来,图像图形处理业务快速发展,相关领域市场不断扩大的情况下,我们JAVA语言系统怎么从这么庞大,且还在不断扩大的市场上分到一块蛋糕,是值得每个JAVAER认真思考和行动的事情
- 安装ubuntu14.04登录后花屏了怎么办
cuiyadll
ubuntu
这个情况,一般属于显卡驱动问题。
可以先尝试安装显卡的官方闭源驱动。
按键盘三个键:CTRL + ALT + F1
进入终端,输入用户名和密码登录终端:
安装amd的显卡驱动
sudo
apt-get
install
fglrx
安装nvidia显卡驱动
sudo
ap
- SSL 与 数字证书 的基本概念和工作原理
darrenzhu
加密ssl证书密钥签名
SSL 与 数字证书 的基本概念和工作原理
http://www.linuxde.net/2012/03/8301.html
SSL握手协议的目的是或最终结果是让客户端和服务器拥有一个共同的密钥,握手协议本身是基于非对称加密机制的,之后就使用共同的密钥基于对称加密机制进行信息交换。
http://www.ibm.com/developerworks/cn/webspher
- Ubuntu设置ip的步骤
dcj3sjt126com
ubuntu
在单位的一台机器完全装了Ubuntu Server,但回家只能在XP上VM一个,装的时候网卡是DHCP的,用ifconfig查了一下ip是192.168.92.128,可以ping通。
转载不是错:
Ubuntu命令行修改网络配置方法
/etc/network/interfaces打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载.
1. 以D
- php包管理工具推荐
dcj3sjt126com
PHPComposer
http://www.phpcomposer.com/
Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
中文文档
入门指南
下载
安装包列表
Composer 中国镜像
- Gson使用四(TypeAdapter)
eksliang
jsongsonGson自定义转换器gsonTypeAdapter
转载请出自出处:http://eksliang.iteye.com/blog/2175595 一.概述
Gson的TypeAapter可以理解成自定义序列化和返序列化 二、应用场景举例
例如我们通常去注册时(那些外国网站),会让我们输入firstName,lastName,但是转到我们都
- JQM控件之Navbar和Tabs
gundumw100
htmlxmlcss
在JQM中使用导航栏Navbar是简单的。
只需要将data-role="navbar"赋给div即可:
<div data-role="navbar">
<ul>
<li><a href="#" class="ui-btn-active&qu
- 利用归并排序算法对大文件进行排序
iwindyforest
java归并排序大文件分治法Merge sort
归并排序算法介绍,请参照Wikipeida
zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F
基本思想:
大文件分割成行数相等的两个子文件,递归(归并排序)两个子文件,直到递归到分割成的子文件低于限制行数
低于限制行数的子文件直接排序
两个排序好的子文件归并到父文件
直到最后所有排序好的父文件归并到输入
- iOS UIWebView URL拦截
啸笑天
UIWebView
本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone说明:译者在做app开发时,因为页面的javascript文件比较大导致加载速度很慢,所以想把javascript文件打包在app里,当UIWebView需要加载该脚本时就从app本地读取,但UIWebView并不支持加载本地资源。最后从下文中找到了解决方法,第一次翻译,难免有
- 索引的碎片整理SQL语句
macroli
sql
SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @execstr VARCHAR (255)
DECLARE @objectid INT
DECLARE @indexid INT
DECLARE @frag DECIMAL
DECLARE @maxfrag DECIMAL
--设置最大允许的碎片数量,超过则对索引进行碎片
- Angularjs同步操作http请求with $promise
qiaolevip
每天进步一点点学习永无止境AngularJS纵观千象
// Define a factory
app.factory('profilePromise', ['$q', 'AccountService', function($q, AccountService) {
var deferred = $q.defer();
AccountService.getProfile().then(function(res) {
- hibernate联合查询问题
sxj19881213
sqlHibernateHQL联合查询
最近在用hibernate做项目,遇到了联合查询的问题,以及联合查询中的N+1问题。
针对无外键关联的联合查询,我做了HQL和SQL的实验,希望能帮助到大家。(我使用的版本是hibernate3.3.2)
1 几个常识:
(1)hql中的几种join查询,只有在外键关联、并且作了相应配置时才能使用。
(2)hql的默认查询策略,在进行联合查询时,会产
- struts2.xml
wuai
struts
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache