笔记(原创) - jues

gentoo install mozjs185

找了很久终于找到了

 

emerge -avt dev-perl/JavaScript-SpiderMonkey --autounmask-write

 

linux 下浏览器播放视频会屏保的情况

linux 下浏览器播放视频会屏保的情况。

安装以下软件

https://launchpad.net/caffeine

gparted 常用文件系统支持

emerge -avt  f2fs-tools dosfstools mtools jfsutils lvm2 nilfs-utils reiser4progs reiserfsprogs xfsprogs xfsdump ntfs3g --autounmask-write

kde卡死情况

以前都是追求速度,使用轻量级的桌面环境,后来独立显卡安装好后,除了玩游戏,其它的好像大材小用了,看了下gentoo官方的wiki,安装kde比其它的桌面简单多了,很多东西都集成安装了。就一条命令.

emerge -avt kde-meta

使用过一切还好,有些头痛的问题,就是有时候会卡死。

(1) 声卡冲突。

这个卡死问题,真太痛苦了,要死不死的,启动程序会很慢,声音有时有,有时无,还不能同时播放两个声音,后来查了发现是冲突问题。

 在 /etc/portage/make.conf 中修改USE

 USE="... -pulseaudio"

然后编译

emerge --ask --changed-use --deep @world

(2) fcitx配置问题。

这个问题现象太奇怪了,用默认的kde配置没有问题,一切好像正常,但如果在窗口装饰中用了新获取的装饰,那启动后,进入桌面,

一切好像也正常,但随便打开一个有标题的窗口,那马上会卡死,除了鼠标一切暂停了。只好切换到终端关闭。

配置以下文件 当前主目录下的 .xprofile 文件

export XMODIFIERS=@im=fcitx 
export GTK_IM_MODULE=fcitx 
export QT_IM_MODULE=fcitx

(3) 笔记本鼠标触摸板问题

这个不算卡死问题,但一般用笔记本的人,触摸板和触摸板上的相应鼠标的滑轮用不了,那也是很痛苦的事。

在Xfce4桌面时用自带工具配置下就好了,但在kde下显然不是这样,至少我还没有发现。

解决方法,配置显卡配置文件: /etc/X11/xorg.conf

在文件后面追加以下内容

Section "InputClass"
       Identifier "touchpad catchall"
       Driver "synaptics" MatchIsTouchpad "on"
       MatchDevicePath "/dev/input/event*"
       Option "TapButton1" "1"
       Option "TapButton2" "2"
       Option "TapButton3" "3"
       Option "HorizEdgeScroll" "true"
       Option "VertEdgeScroll" "true"
EndSection

 

 

插入算法



int insertData( int data[],int first,int last  )
{
    int i1,i2,res;

    if ( first >= last )
        return 0;

    res = 0 ;
    for ( i1 = first + 1; last >= i1;i1++ )
    {
        int swap = data[ i1 ];

        for( i2=i1 - 1;( first <= i2 ) &&( swap < data[ i2 ] ) ;i2-- )
        {
            data[ i2 + 1 ] = data[ i2 ];
        }
        data[ i2 + 1 ] = swap;
        res++;
    }

    return res;
}


int insertData2( int *data,int len  )
{
    int res = 0;
    int i1,i2;

    if ( 0 == data )
        return 0;

    for ( i1 = 1;len > i1;i1++ )
    {
        int swap = *( data + i1 );

        for ( i2 = i1 - 1;( 0 <= i2 ) && ( swap > *( data + i2 ) );i2-- )
        {
            *( data + i2 + 1 ) = *( data + i2 );
        }
        *( data + i2 + 1 ) = swap;
        res++;
    }
    
    return res;
}

void main()
{
    int data[] = { 100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81 };
    int res;
    /**/
    /* 都是插入排序,其中一个用指针方式 */
    /* 从小到大排序 */
     res = insertData( data,0,sizeof( data ) / sizeof( data[ 0 ] ) );
    /* 从大到小排序 */
     res = insertData2( data,sizeof( data ) / sizeof( data[ 0 ] ) );

}

冒泡算法

void main()
{
	int data[] = { 10,31,5,60,100,200,50 };
	int i1,i2,size;
//
	size = sizeof( data ) / sizeof( data[ 0 ] );

	for ( i1 = 0;size > i1;i1++ )
	{
		for ( i2 = i1;size > i2;i2++ )
		{
			if ( data[ i1 ] < data[ i2 ] )
			{
				int swap = data[ i1 ];
				data[ i1 ] = data[ i2 ];
				data[ i2 ] = swap;
			}
		}
	}	
}

MTK设置闹钟

格式:“时间#周期”

周期格式:

1,2,3,4,5,6,7分别代表周一到周七,

如果选择了周三和周四,就“09:30#34”,

每天都响,就“09:30#1234567”,

只响一次就“09:30#0”

 

/* 设置闹钟 */
void my_easy_set_alarm_clock( U8 i,alm_nvram_struct  *p  )
{
	srv_alm_write( i,p );
	AlmActivateIndicator();
}

/*****************************************************************************
 * FUNCTION
 *  pow
 * DESCRIPTION
 *  
 * PARAMETERS
 *  base        [IN]        
 *  index       [IN]        
 * RETURNS
 *  
 *****************************************************************************/
int my_pow(int base, int index)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    int i, ret = 1;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 0; i < index; i++)
    {
        ret = ret * base;
    }
    return ret;
}


/*  根据指令直接修改系统闹钟*/
void my_set_alarm_clock( U8 index,const char *str )
{
	const int max = 13;
	int len;
	int i = 6;
	int num;
	alm_nvram_struct *p;

	if (  NULL == str  )
		return;

	len = strlen( str );
	
	if ( 7 > len  || NUM_OF_ALM <= index ) 
		return;/* 不是有效数据 */

	p = ( alm_nvram_struct *)srv_alm_read( index );
	/*时间*/
       p->Hour = 10 * ( str[ 0 ] - 48 ) + ( str[ 1 ] - 48 ) ;
       p->Min = 10 * ( str[ 3 ] - 48 ) + ( str[ 4 ] - 48 );

	if ( 24 <= p->Hour || 59 <  p->Min  )
		return; /* 时间无效 */
	
	p->Snooze = 0;
	p->SnoozeInterval = 0;
	/* 周期 */
	p->Freq = 4; /* 53 和50D 不一样 */
	p->Days = 0;	
	while ( 0 != str[ i ] && max > i )
	{
		num = ( int )str[ i ] - 48;
		if ( 0 <= num && 7 >= num )
		{
			if ( 0 == num )
			{ p->Days |= 0; 
			}
			else
			{
			    if ( 7 == num )
				  num = 1;
				else
				  num += 1;
				p->Days |= my_pow( 2,num - 1 );
			}
		}
		else
		{ /* 数据无效 */
			return;
		}
		i++;
	}
	if ( 0 ==  p->Days  )
		p->Freq = 1;/* 53 和50D 不一样 */
	/*开关*/
	p->State = 1;
	/* 保存生效 */
	my_easy_set_alarm_clock( index,p );
}

C语言字符串向前查找

/*
逆向查找
src_str : 要查找的字符源
src_len: 源字符可以向前查找的长度
sub_str: 要查找的内容

return char* ( 成功: 查找到的位置指针,失败: NULL )
*/
char*   my_str_back_find( char* src_str,int src_len,const char* sub_str  )
{
	int sub_len;
	int i,i1;
	char *p;
	/**/
	if ( NULL == src_str || NULL == sub_str || 0 >= src_len )	
		return NULL;

	sub_len = strlen( sub_str );
	if ( 0 >= src_len )
		return NULL;

	if ( src_len < sub_len )
		return NULL;

	/* 两个字符要查找的长度相等,则直接比较 */
	if ( src_len ==  sub_len )
	{
		p = src_str - sub_len;
		if ( 0 == strcmp( p,sub_str ) )
		   return  p;
		else
		   return NULL;
	}

	/* 向前查找 */
	for ( i = 0 ; src_len > i;i++  )
	{
		p = src_str -( sub_len + i ) ;
		if ( 0 == memcmp(  p,sub_str,sub_len ) )
			return p;

	}

	return NULL;

}

MTK unix时间戳

在53,50D平台测试通过

/*utc标准时间戳转换时间( local_zone = KAL_TRUE 转换为本地时间,local_zone = KAL_FALSE为 标准时间 )*/ 
kal_bool  my_clock_utc_to_time( kal_uint32 utc, applib_time_struct *result ,const kal_bool  local_zone )
{

	if ( KAL_TRUE == local_zone )
		utc += ( ( int )( TimeZoneData[PhnsetGetHomeCity() + 1].CityTimeZone )  * 3600 );  

	return mmi_dt_utc_sec_2_mytime( utc,result,KAL_FALSE  );

} 
/*时间( local_zone = KAL_TRUE 为本地时间,local_zone = KAL_FALSE 为标准时间 ) 转换为标准时间戳*/ 
kal_uint32  my_clock_time_to_utc( applib_time_struct *result ,const kal_bool  local_zone )
{
	kal_uint32 ltz = 0;

	if ( KAL_TRUE == local_zone )
		ltz -= ( ( int )( TimeZoneData[PhnsetGetHomeCity() + 1].CityTimeZone ) * 3600 );  

	return mmi_dt_mytime_2_utc_sec( result,KAL_FALSE  ) + ltz;
}

MTK更改系统时间

在53,50D平台下测试通过。

 

/*****************************************************************************
 * FUNCTION
 *  mmi_dt_set_rtc_dt
 * DESCRIPTION
 *  This function is to send set time request to L4
 *  Functionality:
 * PARAMETERS
 *  t       [?]     [?]
 *  a(?)        [IN/OUT](?)
 *  b(?)        [IN](?)
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_dt_set_rtc_dt(MYTIME *t)
{