text:
package com.example.charmer.moving.relevantexercise;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.charmer.moving.MainActivity;
import com.example.charmer.moving.R;
import com.example.charmer.moving.contantData.HttpUtils;
import com.example.charmer.moving.pojo.VariableExercise;
import com.example.charmer.moving.utils.StatusBarCompat;
import com.google.gson.Gson;

import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

public class ManagerexeActivity extends AppCompatActivity {

    private BaseAdapter adapter1;
    private BaseAdapter adapter2;
    private BaseAdapter adapter3;
    private Button cancelExe;
    private Button cancelJoin;
    private Button cancelEnroll;
    private TextView noData1;
    private TextView noData2;
    private TextView noData3;
    ViewPager pager = null;
    PagerTabStrip tabStrip = null;
    private ListView exelist1;
    private ListView exelist2;
    private ListView exelist3;
    private SwipeRefreshLayout mSr_refresh;
    private SwipeRefreshLayout mSr_refresh2;
    private SwipeRefreshLayout mSr_refresh3;
    private RelativeLayout finishthis;
    private ImageView isscan;
    ArrayList<View> viewContainter = new ArrayList<View>();
    List<String> titleContainer = new ArrayList<String>();
    public String TAG = "tag";
    final ArrayList<VariableExercise.Exercises> exeinfolist1 = new ArrayList<VariableExercise.Exercises>();
    final ArrayList<VariableExercise.Exercises> exeinfolist2 = new ArrayList<VariableExercise.Exercises>();
    final ArrayList<VariableExercise.Exercises> exeinfolist3 = new ArrayList<VariableExercise.Exercises>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.managerexe);
        StatusBarCompat.compat(this, Color.parseColor("#0099ff"));
        pager = (ViewPager) this.findViewById(R.id.vper);
        tabStrip = (PagerTabStrip) this.findViewById(R.id.strip);
        finishthis =((RelativeLayout) findViewById(R.id.finishthis));

        //取消tab下面的长横线
       // titleStrip.setDrawFullUnderline(false);
        //设置tab的背景色
        tabStrip.setBackgroundColor(this.getResources().getColor(R.color.colorSkybule));
        //设置当前tab页签的下划线颜色
        tabStrip.setTabIndicatorColor(this.getResources().getColor(R.color.white));
        tabStrip.setTextSpacing(200);

        View view1 = LayoutInflater.from(this).inflate(R.layout.blanklist, null);
        View view2 = LayoutInflater.from(this).inflate(R.layout.blanklistsupply, null);
        View view3 = LayoutInflater.from(this).inflate(R.layout.blanklistenroll, null);

        mSr_refresh = (SwipeRefreshLayout) view1.findViewById(R.id.exeitemrefresh);
        //设置下拉刷新加载圈的颜色
        mSr_refresh.setColorSchemeColors(getResources().getColor(R.color.refreshcolor));
        //设置下拉加载圈出现距离顶部的位置
        mSr_refresh.setDistanceToTriggerSync(getResources().getDimensionPixelOffset(R.dimen.swipe_progress_appear_offset));
        //设置下拉加载圈转动时距离顶部的位置
        mSr_refresh.setProgressViewEndTarget(true, getResources().getDimensionPixelOffset(R.dimen.swipe_progress_to_top));

        mSr_refresh2 = (SwipeRefreshLayout) view2.findViewById(R.id.exeitem2refresh);
        //设置下拉刷新加载圈的颜色
        mSr_refresh2.setColorSchemeColors(getResources().getColor(R.color.refreshcolor));
        //设置下拉加载圈出现距离顶部的位置
        mSr_refresh2.setDistanceToTriggerSync(getResources().getDimensionPixelOffset(R.dimen.swipe_progress_appear_offset));
        //设置下拉加载圈转动时距离顶部的位置
        mSr_refresh2.setProgressViewEndTarget(true, getResources().getDimensionPixelOffset(R.dimen.swipe_progress_to_top));

        mSr_refresh3 = (SwipeRefreshLayout) view3.findViewById(R.id.exeitem3refresh);
        //设置下拉刷新加载圈的颜色
        mSr_refresh3.setColorSchemeColors(getResources().getColor(R.color.refreshcolor));
        //设置下拉加载圈出现距离顶部的位置
        mSr_refresh3.setDistanceToTriggerSync(getResources().getDimensionPixelOffset(R.dimen.swipe_progress_appear_offset));
        //设置下拉加载圈转动时距离顶部的位置
        mSr_refresh3.setProgressViewEndTarget(true, getResources().getDimensionPixelOffset(R.dimen.swipe_progress_to_top));

        bindEvents();
        exelist1 = (ListView)view1.findViewById(R.id.exeitem);
        exelist2 = (ListView)view2.findViewById(R.id.exeitem2);
        exelist3 = (ListView)view3.findViewById(R.id.exeitem3);
        noData1 = (TextView) view1.findViewById(R.id.noData);
        noData2 = (TextView) view2.findViewById(R.id.noData);
        noData3 = (TextView) view3.findViewById(R.id.noData);
        //viewpager开始添加view
        viewContainter.add(view1);
        viewContainter.add(view2);
        viewContainter.add(view3);
        //页签项
        titleContainer.add("我的发布");
        titleContainer.add("我的参加");
        titleContainer.add("我的报名");

        tabStrip.setTextSize(1,18);
        tabStrip.setTextColor(this.getResources().getColor(R.color.white));
        pager.setAdapter(new PagerAdapter() {

            //viewpager中的组件数量
            @Override
            public int getCount() {
                return viewContainter.size();
            }
            //滑动切换的时候销毁当前的组件
            @Override
            public void destroyItem(ViewGroup container, int position,
                                    Object object) {
                ((ViewPager) container).removeView(viewContainter.get(position));
            }
            //每次滑动的时候生成的组件
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                ((ViewPager) container).addView(viewContainter.get(position));
                return viewContainter.get(position);
            }

            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == arg1;
            }

            @Override
            public int getItemPosition(Object object) {
                return super.getItemPosition(object);
            }

            @Override
            public CharSequence getPageTitle(int position) {
                return titleContainer.get(position);
            }
        });

        pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrollStateChanged(int arg0) {
                Log.d(TAG, "--------changed:" + arg0);

            }
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
//                Log.d(TAG, "--------onPageScrolled:" + arg0);
//                Log.d(TAG, "--------onPageScrolled:" + arg2);
            }

            @Override
            public void onPageSelected(int arg0) {
                Log.d(TAG, "------selected:" + arg0);
                switch (arg0){
                    case 0:
                        exelist2.setAdapter(adapter2);
                        getExespart();
                        break;
                    case 1:
                        exelist1.setAdapter(adapter1);
                        getExe();
                        exelist3.setAdapter(adapter3);
                        getExesenroll();
                        break;
                    case 2:
                        exelist2.setAdapter(adapter2);
                        getExespart();
                        break;
                }
            }
        });

        adapter1 = new MyexeAdapter();
        adapter2 = new exeAdapter();
        adapter3 = new exeenrollAdapter();

        exelist1.setAdapter(adapter1);
        getExe();
        exelist2.setAdapter(adapter2);
        getExespart();
        exelist3.setAdapter(adapter3);
        getExesenroll();
        exelist1.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(ManagerexeActivity.this, ExeInfopublisher.class);
                intent.putExtra("exerciseId", exeinfolist1.get(position).exerciseId+"");
                startActivity(intent);

            }
        });
        exelist2.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(ManagerexeActivity.this, ExeInfoparticipate.class);
                intent.putExtra("exerciseId", exeinfolist2.get(position).exerciseId+"");
                startActivity(intent);

            }
        });
        exelist3.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(ManagerexeActivity.this, ExeInfoEnroll.class);
                intent.putExtra("exerciseId", exeinfolist3.get(position).exerciseId+"");
                startActivity(intent);

            }
        });
        finishthis.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

    }

    @Override
    protected void onRestart() {
        super.onRestart();
        System.out.println("+++++++++++++++onRestart");
        exelist1.setAdapter(adapter1);
        getExe();
        exelist2.setAdapter(adapter2);
        getExespart();
        exelist3.setAdapter(adapter3);
        getExesenroll();
    }

    private void bindEvents() {
        mSr_refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                mSr_refresh.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        getExe();
                        //调用该方法结束刷新,否则加载圈会一直在
                        if(exeinfolist1.size()>0){
                            noData1.setText("");
                        }else{
                            noData1.setText("没有数据呢!");
                        }
                        mSr_refresh.setRefreshing(false);
                    }
                }, 1000);
            }
        });
        mSr_refresh2.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                mSr_refresh2.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        getExespart();
                        //调用该方法结束刷新,否则加载圈会一直在
                        if(exeinfolist2.size()>0){
                            noData2.setText("");
                        }else{
                            noData2.setText("没有数据呢!");
                        }
                        mSr_refresh2.setRefreshing(false);
                    }
                }, 1000);
            }
        });
        mSr_refresh3.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                mSr_refresh3.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        getExesenroll();
                        //调用该方法结束刷新,否则加载圈会一直在
                        if(exeinfolist3.size()>0){
                            noData3.setText("");
                        }else{
                            noData3.setText("没有数据呢!");
                        }
                        mSr_refresh3.setRefreshing(false);
                    }
                }, 1000);
            }
        });

    }

    private void getExe() {
        String str = HttpUtils.hoster+"getexebypublish";
        RequestParams params = new RequestParams(str);
        params.addQueryStringParameter("publisher", MainActivity.getUser().getUseraccount());

        x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                Gson gson = new Gson();
                exeinfolist1.clear();
                VariableExercise bean = gson.fromJson(result, VariableExercise.class);
                exeinfolist1.addAll(bean.exerciseList);
                //dongtaiList = bean.dongtailist;   error
                if(exeinfolist1.size()>0){
                    noData1.setText("");
                }else{
                    noData1.setText("没有数据呢!");
                }
                //通知listview更新界面
                adapter1.notifyDataSetChanged();

            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });

    }

    private void getExespart() {
        String str = HttpUtils.hoster+"getexebypart";
        RequestParams params = new RequestParams(str);
        params.addQueryStringParameter("participator",MainActivity.getUser().getUseraccount());
        params.addQueryStringParameter("mode","0");
        x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                if(!"".equals(result)) {
                    Gson gson = new Gson();
                    exeinfolist2.clear();
                    VariableExercise bean = gson.fromJson(result, VariableExercise.class);
                    exeinfolist2.addAll(bean.exerciseList);
                    //dongtaiList = bean.dongtailist;   error
                    if(exeinfolist2.size()>0){
                        noData2.setText("");
                    }else{
                        noData2.setText("没有数据呢!");
                    }
                    //通知listview更新界面
                    adapter2.notifyDataSetChanged();
                }

            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });

    }

    private void getExesenroll() {
        String str = HttpUtils.hoster+"getexebypart";
        RequestParams params = new RequestParams(str);
        params.addQueryStringParameter("participator",MainActivity.getUser().getUseraccount());
        params.addQueryStringParameter("mode","1");
        x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                Gson gson = new Gson();
                exeinfolist3.clear();
                VariableExercise bean = gson.fromJson(result, VariableExercise.class);
                exeinfolist3.addAll(bean.exerciseList);
                //dongtaiList = bean.dongtailist;   error
                if(exeinfolist3.size()>0){
                    noData3.setText("");
                }else{
                    noData3.setText("没有数据呢!");
                }
                //通知listview更新界面
                adapter3.notifyDataSetChanged();

            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });

    }

    class MyexeAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return exeinfolist1.size();
        }

        @Override
        public Object getItem(int position) {
            return exeinfolist1.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Log.i(TAG, "加载listview item position:" + position);
            final int position1 = position;
            ViewHolder viewHolder = null;
            if(convertView == null) {
                viewHolder = new ViewHolder();
                // 打气筒  view就是指每一个listview item
                convertView = View.inflate(ManagerexeActivity.this, R.layout.exeitemintro, null);
                viewHolder.type = ((TextView) convertView.findViewById(R.id.exetype));
                viewHolder.title = ((TextView) convertView.findViewById(R.id.exetitle));
                viewHolder.place = ((TextView) convertView.findViewById(R.id.exeplace));
                viewHolder.activityTime = ((TextView) convertView.findViewById(R.id.exetime));
                viewHolder.releaseTime = ((TextView) convertView.findViewById(R.id.releasetime));
                cancelExe = (Button) convertView.findViewById(R.id.cancelExe);
                convertView.setTag(viewHolder);//缓存对象
            }else{
                viewHolder = (ViewHolder)convertView.getTag();
            }
            final VariableExercise.Exercises exercises = exeinfolist1.get(position);

            try {
                viewHolder.type.setText(URLDecoder.decode(exercises.type,"utf-8"));
                viewHolder.title.setText(URLDecoder.decode(exercises.title,"utf-8"));
                viewHolder.place.setText(URLDecoder.decode(exercises.place,"utf-8"));
                viewHolder.activityTime.setText(URLDecoder.decode(exercises.activityTime,"utf-8").substring(5,16));
                viewHolder.releaseTime.setText(URLDecoder.decode(exercises.releaseTime,"utf-8").substring(5,16));
                cancelExe.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        AlertDialog.Builder builder = new AlertDialog.Builder(
                                ManagerexeActivity.this);
                        builder.setMessage(getString(R.string.cancel_sure));
                        builder.setTitle(R.string.cancelExeintro);
//                    builder.setIcon(getResources().getDrawable(
//                            R.drawable.delete1));
                        builder.setPositiveButton(
                                getString(R.string.ok),
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(
                                            DialogInterface dialogInterface,
                                            int which) {
                                        // TODO Auto-generated method
                                        cancelExe(position1,exeinfolist1.get(position1).exerciseId.toString(),MainActivity.getUser().getUseraccount(),ManagerexeActivity.this);
                                    }
                                });
                        builder.setNegativeButton(
                                getString(R.string.app_cancel),
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(
                                            DialogInterface dialogInterface,
                                            int which) {
                                        // TODO Auto-generated method
                                        // stub
                                        dialogInterface.dismiss();
                                    }
                                });
                        builder.create().show();
                    }
                });
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return convertView;
        }

    }

    class exeAdapter extends BaseAdapter{

    @Override
    public int getCount() {
        return exeinfolist2.size();
    }

    @Override
    public Object getItem(int position) {
        return exeinfolist2.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Log.i(TAG, "加载listview item position:" + position);
        final int position1 = position;
        ViewHolder viewHolder = null;
        if(convertView == null) {
            viewHolder = new ViewHolder();
            // 打气筒  view就是指每一个listview item
            convertView = View.inflate(ManagerexeActivity.this, R.layout.joinexeitemintro, null);
            viewHolder.type = ((TextView) convertView.findViewById(R.id.exetype));
            viewHolder.title = ((TextView) convertView.findViewById(R.id.exetitle));
            viewHolder.place = ((TextView) convertView.findViewById(R.id.exeplace));
            viewHolder.activityTime = ((TextView) convertView.findViewById(R.id.exetime));
            viewHolder.releaseTime = ((TextView) convertView.findViewById(R.id.releasetime));
            cancelJoin = (Button) convertView.findViewById(R.id.cancelJoin);
            isscan = (ImageView) convertView.findViewById(R.id.isscan);

            convertView.setTag(viewHolder);//缓存对象
        }else{
            viewHolder = (ViewHolder)convertView.getTag();
        }
        VariableExercise.Exercises exercises = exeinfolist2.get(position);

        try {
            viewHolder.type.setText(URLDecoder.decode(exercises.type,"utf-8"));
            viewHolder.place.setText(URLDecoder.decode(exercises.place,"utf-8"));
            viewHolder.title.setText(URLDecoder.decode(exercises.title,"utf-8"));
            viewHolder.activityTime.setText(URLDecoder.decode(exercises.activityTime,"utf-8").substring(5,16));
            viewHolder.releaseTime.setText(URLDecoder.decode(exercises.releaseTime,"utf-8").substring(5,16));
            System.out.println("-----------"+exercises.isScan);
            if(!exercises.isScan){
                isscan.setVisibility(View.GONE);
            }

            cancelJoin.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            ManagerexeActivity.this);
                    builder.setMessage(getString(R.string.cancel_sure));
                    builder.setTitle(R.string.canceljoinExeintro);
//                    builder.setIcon(getResources().getDrawable(
//                            R.drawable.delete1));
                    builder.setPositiveButton(
                            getString(R.string.ok),
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(
                                        DialogInterface dialogInterface,
                                        int which) {
                                    // TODO Auto-generated method
                                    cancelRequest(position1,exeinfolist2.get(position1).exerciseId.toString(), MainActivity.getUser().getUseraccount(),ManagerexeActivity.this);
                                }
                            });
                    builder.setNegativeButton(
                            getString(R.string.app_cancel),
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(
                                        DialogInterface dialogInterface,
                                        int which) {
                                    // TODO Auto-generated method
                                    // stub
                                    dialogInterface.dismiss();
                                }
                            });
                    builder.create().show();

                }
            });
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return convertView;
    }

}

    class exeenrollAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return exeinfolist3.size();
        }

        @Override
        public Object getItem(int position) {
            return exeinfolist3.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final int position1 = position;
            Log.i(TAG, "加载listview item position:" + position);
            ViewHolder viewHolder = null;
            if(convertView == null) {
                viewHolder = new ViewHolder();
                // 打气筒  view就是指每一个listview item
                convertView = View.inflate(ManagerexeActivity.this, R.layout.exeitemenroll, null);
                viewHolder.type = ((TextView) convertView.findViewById(R.id.exetype));
                viewHolder.place = ((TextView) convertView.findViewById(R.id.exeplace));
                viewHolder.title = ((TextView) convertView.findViewById(R.id.exetitle));
                viewHolder.activityTime = ((TextView) convertView.findViewById(R.id.exetime));
                viewHolder.releaseTime = ((TextView) convertView.findViewById(R.id.releasetime));
                cancelEnroll = ((Button) convertView.findViewById(R.id.cancelEnroll));
                convertView.setTag(viewHolder);//缓存对象
            }else{
                viewHolder = (ViewHolder)convertView.getTag();
            }
            VariableExercise.Exercises exercises = exeinfolist3.get(position);

            try {
                viewHolder.type.setText(URLDecoder.decode(exercises.type,"utf-8"));
                viewHolder.place.setText(URLDecoder.decode(exercises.place,"utf-8"));
                viewHolder.title.setText(URLDecoder.decode(exercises.title,"utf-8"));
                viewHolder.activityTime.setText(URLDecoder.decode(exercises.activityTime,"utf-8").substring(5,16));
                viewHolder.releaseTime.setText(URLDecoder.decode(exercises.releaseTime,"utf-8").substring(5,16));

                cancelEnroll.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        AlertDialog.Builder builder = new AlertDialog.Builder(
                                ManagerexeActivity.this);
                        builder.setMessage(getString(R.string.cancel_sure));
                        builder.setTitle(R.string.cancelenrollintro);
//                    builder.setIcon(getResources().getDrawable(
//                            R.drawable.delete1));
                        builder.setPositiveButton(
                                getString(R.string.ok),
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(
                                            DialogInterface dialogInterface,
                                            int which) {
                                        // TODO Auto-generated method
                                        cancelEnroll(position1,exeinfolist3.get(position1).exerciseId.toString(), MainActivity.getUser().getUseraccount(), ManagerexeActivity.this);
                                    }
                                });
                        builder.setNegativeButton(
                                getString(R.string.app_cancel),
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(
                                            DialogInterface dialogInterface,
                                            int which) {
                                        // TODO Auto-generated method
                                        // stub
                                        dialogInterface.dismiss();
                                    }
                                });
                        builder.create().show();
                    }
                });

            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return convertView;
        }

    }

    private static class ViewHolder{
        TextView type ;
        TextView title ;
        TextView place ;
        TextView activityTime ;
        TextView releaseTime ;
        TextView theme;

    }

    public void cancelExe(int position,String exerciseId,String publisher,Context contexts){
        final int position1 = position;
        final Context context = contexts;
        String str = HttpUtils.hoster+"cancelany";
        RequestParams params = new RequestParams(str);
        params.addQueryStringParameter("publisher",publisher);
        params.addQueryStringParameter("exerciseId",exerciseId);
        params.addQueryStringParameter("choice","3");
        x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                System.out.println(result);
                if ("true".equals(result)){
                    Toast.makeText(context,"取消活动成功!",Toast.LENGTH_SHORT).show();
                    exeinfolist1.remove(position1);
                    adapter1.notifyDataSetChanged();
                }else {
                    Toast.makeText(context,"取消失败!",Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });
    }

    public void cancelRequest(int position,String exerciseId,String joiner,Context contexts){

        final Context context = contexts;
        final int position1 =position;
        String str = HttpUtils.hoster+"cancelany";
        RequestParams params = new RequestParams(str);

        params.addQueryStringParameter("exerciseId",exerciseId);
        params.addQueryStringParameter("joiner",joiner);
        params.addQueryStringParameter("choice","4");
        x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                System.out.println(result);
                if ("true".equals(result)){
                   // Toast.makeText(context,"取消参加成功!",Toast.LENGTH_SHORT).show();
                    exeinfolist2.remove(position1);
                    adapter2.notifyDataSetChanged();
                }else {
                    Toast.makeText(context,"取消失败!",Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });
    }
    public void cancelEnroll(int position,String exerciseId,String joiner,Context contexts){
        final int position1 = position;
        final Context context = contexts;
        String str = HttpUtils.hoster+"cancelany";
        RequestParams params = new RequestParams(str);

        params.addQueryStringParameter("exerciseId",exerciseId);
        params.addQueryStringParameter("joiner",joiner);
        params.addQueryStringParameter("choice","1");
        x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                System.out.println(result);
                if ("true".equals(result)){
                    Toast.makeText(context,"报名取消成功!",Toast.LENGTH_SHORT).show();
                    exeinfolist3.remove(position1);
                    adapter3.notifyDataSetChanged();
                }else {
                    Toast.makeText(context,"取消失败!",Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });

    }
}


Brand new in original box. Comes with 1 pair of chrome housing smoke lens LED tail lights. All wiring for the tail lights are pre-assembled for the essential plug & play application. Reverse light bulbs are not included - please use stock bulbs for installation. Professional installation is highly recommended Vehicle Fitment : 2003-06 Chevy Silverado 1500 / 1500HD / 2500 / 2500HD 2004-06 Chevy Silverado 3500 2007 Chevy Silverado Classic 2004-06 GMC Sierra 1500 / 1500HD / 2500 / 2500HD / 3500 2007 GMC Sierra Classic (Not Compatible on Stepside Models). Video will open in a new window. Transit time does fluctuate (Mostly 3-5 Days). For more information, please refer to UPS.
Please note that we are not responsible for any kind of delay if P. Box address or any other undeliverable addresses were provided. Simply wait until all of the auctions are ended. Damage or Lost in Transit. If your item is received damaged, within 48 hours, contact our customer service department to file a UPS claim for the damaged item(s).
A replacement is sent out immediately once the package arrives to our warehouse. UPS will be in contact with you for further information if needed. We stand behind the products we sell.
Please inspect all your order(s) upon receipt. As a result of lighting and camera variations, product images will not reflect the exact physical color of our products. Most of our item(s) are plug and play, however PROFESSIONAL installation is highly recommended. Estimated arrival time is calculated on which of our distribution centers is nearest.
Map arrival time is only valid if your items are in stock at that location. K2 Motor Corporation is the Ultimate Source for Automotive Lighting. We carry quality automotive lighting and accessory parts at unbelievably low prices. This listing is currently undergoing maintenance, we apologise for any inconvenience caused. The item "2003-2006 Chevy Silverado Sierra 1500 2500 3500 Smoke LED Tail Lights Left+Right" is in sale since Monday, October 2, 2017.
This item is in the category "eBay Motors\Parts & Accessories\Car & Truck Parts\Lighting & Lamps\Tail Lights". The seller is "k2motor" and is located in Walnut, California. This item can be shipped to United States, all countries in Europe, Canada, Australia, Japan, South Korea, Indonesia, Taiwan, South africa, Thailand, Hong Kong, Israel, Mexico, New Zealand, Philippines, Singapore, Saudi arabia, United arab emirates, Qatar, Kuwait, Bahrain, Malaysia, Brazil, Chile, Colombia, Costa rica, Dominican republic, Panama, Trinidad and tobago, Guatemala, El salvador, Honduras, Jamaica.
Product Features: Low power consumption, long life.


Ivory Homes announced in conjunction with the celebration of Earth Day 2018 the planting of 30,000 trees throughout Utah to celebrate 30 years of excellence as Utah's number one homebuilder.
The initiative will include partnerships with TreeUtah, the Utah Clean Air Partnership (UCAIR), groups of Ivory homeowners and citizens throughout the state to enhance Utah's already spectacular natural beauty.
Ivory Homes would like to invite Utahns, other corporate partners and communities from across the state to submit ideas and proposals for significant planting projects and locations at www.ivorygreen.com. In total, 20,000 trees will be gifted to the community at large with an additional 10,000 trees planted in new and existing Ivory Homes' communities. The first significant community planting will take place this October with approximately 1,500 trees. This will be in addition to the more than 1,000 trees that will be planted this year in Ivory Homes' communities.
The 30,000-tree initiative is part of the extensive efforts Ivory Homes is making to be an eco-friendly and more sustainable builder. Ivory Homes was recently selected to receive the "Your Utah, Your Future" award by Envision Utah for striving to reduce emissions produced by residential living. As Utah's number one homebuilder, Ivory Homes brings sustainability, quality and design to every home and community the company builds. Each Ivory neighborhood is carefully planned and developed while every home is constructed with sustainability in mind. The Average Ivory Homes HERS* score is 60, while a typical resale home over ten years old scores upwards to 130 points. This difference could save new Ivory Homeowners up to $1200 in utility expenses over the course of a year.
Ivory Homes has been growing and changing with Utah for over 50 years. This includes the completion of more than 22,000 new homes and apartments and decades of street tree planting. This dedication to a single market reflects a unique commitment to the state of Utah and has led some to call Ivory Homes the nation's number one local homebuilder for new home construction. Ivory Homes' initiative to plant over 30,000 trees will take place across the state with future projects and partnerships that will significantly enhance the quality of life for all Utahns. More information is available at www.ivorygreen.com.


text:
25th Anniversary Dinner: a thank you to all alumni
Posted on 31 July 2015 by Christoph Loch • 0 Comments
As a wonderful conclusion to the academic year, we recently celebrated CJBS' 25th anniversary with a festive alumni dinner in the hall of St John's College. Around 260 alumni from all programmes flew in from every continent (except Antarctica!) and we had nine alumni from the first year of the MBA programme, as well as our founding donor Sir Paul Judge and the first MBA director, John Hendry.
A lot has changed, of course. The first students were adventurous – betting on an unproven small place, albeit one that was part of the University of Cambridge. Now we are established and are moving into place among the top business schools in the world. We are a top research business school, as measured by the UK government benchmarking exercise REF, and our programmes are ranked in the elite – for example, the MBA is ranked 13th and the MFin second in the worldwide FT ranking.
But at the same time, people observed a remarkable continuity in spirit. We don't just want any high-quality MBA with smart students (or Executive MBA, or any other programme), but we are looking for more diversity, bringing in people from broader backgrounds and reaching beyond a fixation on the Graduate Management Admission Test (GMAT) to do so. Regardless of the sector or company size, we encourage you to go out and do something you're proud of, to make a difference to yourself and to society, beyond the standard indicator of the size of the salary.
Although we are, as part of the University of Cambridge, a research business school, we want to do more than publish articles in ever-more theoretical scientific journals. We want to do work that is motivated by the problems of our partner managers and organisations (for profit, non-profit or public), the results of which make a difference for the people we work with. This is hard to do, but we have the flexible faculty to accomplish it.
And as part of the Cambridge Cluster, we want to do more than just teach students about the concept of entrepreneurship. We have now built a track record of actively helping early-stage startups to reach investment maturity, both for tech startups and for social ventures. We are helping small companies to develop their organisations' skills to be able to grow and attract long-term follow-on investment, directly addressing the scale-up problem. And we are making a difference to the flow of ideas in Cambridge and other places where we work.
We have come a long way for our young age of 25 years, but we still have a long way to go in order to be named alongside the handful of the best business schools worldwide. And being resource poor, we need help to get there, to reach the full size of 75 faculty and to elevate our facilities. But we are moving ahead, and we hope that all our great alumni will be with us on a ride that will, I'm sure, continue to be thrilling.
← Making international visitors unwelcome is bad for UK PLC
Unsung heroes – why middle managers are often the true stars of successful businesses →
Would you like to comment? Cancel reply
Professor Christoph Loch
Christoph Loch is Professor of Management Studies at Cambridge Judge Business School, University of Cambridge.
Originally from Germany, Christoph was previously at INSEAD, where he was Director of the Israel Research Center and Dean of the PhD programme.
He holds a PhD from the Graduate School of Business at Stanford University, an MBA from the University of Tennessee in Knoxville, and a Diplom-Wirtschaftsingenieur degree from the Darmstadt Institute of Technology in Germany.
Learn more about Christoph Loch >
Very unwise
Edging ahead
Political and business leaders are letting us down
Innovate through project management
A private opinion on Brexit
25th anniversary 2012 Accelerate Cambridge alumni business education Cambridge Cluster Cambridge Conservation Initiative Cambridge Programme for Sustainable Leadership (CPSL) Camfed Centre for Entrepreneurial Learning (CfEL) CEOs China Chinese New Year climate change decision making deep engagement entrepreneurship ethics EU Financial Times FT MBA rankings global politics Hong Kong hubris immigration impact India innovation KPIs leadership management MBAs Olympics project management real world impact relativism research SMEs start-ups strategy sustainability tuition fees UKIP Wittgenstein women in business
Copyright © Professor Christoph Loch

redpajama_set_name: RedPajamaCommonCrawl


The greener solution (in more ways than one).
We often think of the switch to green commercial cleaning as requiring a high upfront investment. That isn't the case with PathoSans. When you eliminate the chemical manufacturer and generate your own green cleaning solutions on-site, significant savings show up immediately on your balance sheet. PathoSans electrochemically-activated solutions cost as little as pennies per gallon when you generate them in your facility. They have a 30-day-or-greater shelf life, meaning little to no solution should go to waste. With multiple financing options available, it is easy to size a PathoSans system to meet the needs of your facility and budget.
Consider how much of the cost of conventional cleaning chemicals are actually for the chemical itself. Then consider how much of the cost goes to manufacturing, shipping, handling, packaging, and administration costs. It just makes sense to eliminate as many steps as possible and go right to the source. In addition to those cost savings, PathoSans two green cleaning solutions, PathoClean and PathoCide, replace a whole host of harsh chemical cleaners, drastically reducing and simplifying your inventory.
Dangerous chemical cleaners require training for safe use. Effective training takes time and money as well as regular re-trainings to ensure the information stays fresh and accurate. When trainings are missed, errors can happen that lead to ineffective and unsafe cleaning practices.
Not only can building cleaners be injured by improper use of conventional cleaning chemicals, but they can also fail to disinfect surfaces to healthy standards. Most conventional cleaning chemicals only promise effectiveness when left on the surface for the recommended dwell time, which can be as long as five to 10 minutes. PathoSans solutions are effective in seconds.
PathoSans green cleaning multi-surface cleaner and disinfectant save labor in a couple critical ways. First, it significantly reduces training time, because the system and solutions are safer, easy, and intuitive to use. Second, the PathoSans system reduces time spent waiting for chemicals to dwell. Five minutes here and five minutes there several times a day adds up to a significant savings by the end of year. PathoSans also reduces the risk of ineffective cleaning from not adhering to the proper dwell time. With an industry that experiences high levels of employee and customer turnover, the labor savings from PathoSans can be a game changer for commercial cleaning operations.


The Social Media Collective is looking for a Research Assistant to work with us at Microsoft Research New England in Cambridge, Massachusetts.
Starting in July 2016 the MSR Social Media Collective will consist of Nancy Baym, Tarleton Gillespie, Mary L. Gray, Dan Greene, and Dylan Mulvin in Cambridge, Kate Crawford and danah boyd in New York City, as well as faculty visitors and Ph.D. interns affiliated with the MSR New England. The RA will work directly with Nancy Baym, Kate Crawford, Tarleton Gillespie, and Mary L. Gray.
An appropriate candidate will be a self-starter who is passionate and knowledgeable about the social and cultural implications of technology. Strong skills in writing, organization and academic research are essential, as are time-management and multi-tasking. Minimal qualifications are a BA or equivalent degree in a humanities or social science discipline and some qualitative research training. A Masters degree is preferred.
The RA will also have opportunities to collaborate on ongoing projects. While publication is not a guarantee, the RA will be encouraged to co-author papers while at MSR. The RAship will require 40 hours per week on site in Cambridge, MA, and remote coordination with New York. It is a 12 month contractor position, with the opportunity to extend the contract an additional 6 months. The position pays hourly with flexible daytime hours. The start date will ideally be July 25, although flexibility is possible for the right candidate.
This position is perfect for emerging scholars planning to apply to PhD programs in Communication, Media Studies, Sociology, Anthropology, Information Studies, History, Philosophy, STS and Critical Data Studies, and related fields who want to develop their research skills and area expertise before entering a graduate program. Current New England-based MA/PhD students are welcome to apply provided they can commit to 40 hours of on-site work per week.
We will begin reviewing applications on May 15 and will continue to do so until we find an appropriate candidate. We will post to the blog when the position is filled.
We regret that because this is a time-limited contract position, we can only consider candidates who are already legally authorized to work in the United States.
Please feel free to ask questions about the position in the blog comments!


text:
Posted by Ryan McSwain on February 6, 2011
Obsidian - Windows, Macintosh (1996)
The unprecedented success of Myst inspired dozens of first-person adventure games with brain-teasing puzzles. Most of these were forgettable attempts to cash in on Myst's popularity, but occasionally a title rose above the rabble. Obsidian is one of these games.
The world of Obsidian is seen through the eyes of Lilah Kerlin. Along with her partner, Max, she has created the Ceres satellite, which is designed to orbit the Earth and correct environmental problems through the use of nanobots. The satellite is deemed self-sufficient, and Lilah and Max celebrate by going camping. It is on this excursion that Lilah realizes something is wrong. Max goes missing, and Lilah sees a massive, newly-created structure of black stone. She is pulled inside, where she must explore a bizarre and beautiful world constructed by Ceres. Lilah must work her way through a series of realms, each filled with fiendish puzzles that will test every brain cell she possesses.
As soon as the player enters this surreal world, the astounding quality of the visual design and its implementation is obvious, with the look of the game still stunning over fifteen years after its release. With the environment presented in a series of still images linked by animated transitions, Obsidian is one of the finest examples of this type of first person adventure. The use of full-motion video is refreshingly unobtrusive and the acting ranges from decent to great. The game's appearance is complemented by a first-rate soundtrack from Thomas Dolby.
But the heart of Obsidian is the puzzles. They are what fans of this specific subgenre will care the most about, and players will not be disappointed. Puzzles are on a similar difficulty scale as those of the Myst series, and you can tell that consideration went into offering a variety of puzzles and love went into their design. There are logic puzzles, visual puzzles, mechanical puzzles, and more, though most are quite original. The difficulty varies wildly as well, as some might take a player a few minutes while others might leave someone baffled for days. In one memorable (and challenging) section early in the game, you are given a small supply of colored keycards that are used to navigate a series of nine interconnected rooms with several entry points. Different doors require different combinations of cards and also reward different cards. Despite the very clear goal and several hints, this clever use of resource management can prove puzzling. The use of inventory is limited, with the player occasionally carrying one item at a time. These items serve more to progress the plot than as the solutions to brain-teasers. There is also very little information to be kept track of, although in very rare instances it is important to remember a phrase or set of numbers for a short period of time.
Ceres' realms function as a hub to the game's puzzles, and each realm has its own distinct look and feel. For example, the first area is an enormous, beautiful room containing a bureaucratic nightmare. As you explore the room, your relative gravity shifts so that you find yourself walking on the walls and ceiling. It would leave M. C. Escher feeling disoriented. The realms are based on the dreams of Lilah and Max and there is dream logic at work in how they function. For instance, you can walk through a doorway into a beautiful open field, and turn around to see the doorway hanging in the air. There is also one point where you shrink down and walk into a sandcastle as if it's a perfectly normal thing to do. Fortunately, this Alice in Wonderland way of thinking does not carry over into the puzzles, which are as fair as they are difficult. There are a few interesting areas that exist only to be enjoyed, such as an art gallery with framed production artwork. To give an idea of the designers' attention to detail, two files from a massive filing system are needed to advance, but hundreds of other files contain amusing illustrations just for flavor. As you explore, you'll discover vidbots: stick-figured robots with television sets in place of a head. When you communicate with them, the screen shows a close-up of a human mouth. Many serve no purpose other than to spout witty dialogue, and one even contains a Breakout-style game.
This is not to say that the game is perfect. The limitations of the slideshow environment are occasionally frustrating. Several rooms are round, and require two screens for every step you take, making it feel like you are moving in slow motion. Like other similar games, more freedom in movement would have been nice, as some puzzles and areas are made more difficult by the limited perspective. For the most part, however, the game remains immersive and elegant.
While not commercially successful, Obsidian is an exceptional game, worth the time of anyone who enjoys an engaging story that showcases challenging, interesting puzzles. Rocket Science Games produced a landmark game with Obsidian, and they obviously had talent and creativity to spare.
Residents', The: Bad Day on the Midway
Last Express, The
Tex Murphy: Overseer
Chu-Teng
Blackstone Chronicles
Neverhood, The
Darkstar: An Interactive Movie
Return of the Obra Dinn
Necronomicon: The Dawning of Darkness
Tag: Adventure: First Person, Adventure: Point and Click, Unique Visuals, Windows
Vampire: The Masquerade (Introduction)
Top 47,858 Games of All Time Episode 367: William Shatner's TekWar


text:
Rachel Detwiler
A glass (or two) of champagne and "Auld Lang Syne" mark the start of a new year. Shuterstock image.
When we sing Robert Burns' "Auld Lang Syne" on New Year's Eve, do we really understand what it's about? The Scots language tends to obscure the meaning, and most of us only ever hear the first verse and chorus in any case. Still, we get that it's full of longing for old friends and days gone by. The older I get the more I have to look back on, and the more this song affects me.
You have your future ahead of you. Mine is behind me.—Yogi Berra
The end of one year and the beginning of a new one is a good time to look back and take stock before we move forward. What happened during the year? What have we accomplished? Whom and what are we grateful for? Whom and what have we lost? What have we learned? What do we hope for in the new year?
I only dread one day at a time.—Charlie Brown in Charles Schulz' Peanuts
"I need ammunition, not a ride."—President Zelenskyy declining a US offer of evacuation. Shutterstock image.
President Zelenskyy addressed Congress on 21 December.
Vladimir Putin positioned more than 150,000 troops on Ukraine's borders, then marched in on 24 February. He clearly expected that Ukraine would capitulate quickly, and that NATO would divide. Instead, NATO has been more united than ever, while Sweden and Finland want to join.
Ukrainian civilians have suffered greatly but remain resolute. Russian casualties are on the order of 100,000. As the Ukrainian army retakes territory, details of Russian war crimes are coming to light.
The US and other NATO nations continue to provide weapons, training, and intelligence. However, some advocate curtailing this support in favor of peace negotiations. Ukraine's Eastern European neighbors are providing refuge as well as weapons and supplies. Remembering Russia's imperial history, they support Ukraine's insistence on complete withdrawal of Russian troops and payment of reparations.
Although Putin maintains tight control of the Russian press, news reaches some of the population. Resistance to the draft is growing. Young men have left the country in large numbers, and the mothers of soldiers express their anger openly.
This year Xi Jinping was elected for an unprecedented third term as General Secretary of the Communist Party. His election, along with recent amendments to the Chinese constitution, have made him the most powerful Chinese leader since Mao. Xi Jinping Thought is now part of the curriculum in Chinese schools and universities.
Like Putin, Xi initially expected Ukraine to capitulate quickly with little support from NATO. Accordingly, China asserted its power in the South China Sea and articulated an aggressive position on Taiwan. But seeing Ukraine's success on the battlefield, NATO's resolve, and Putin's increasing isolation, Xi has hinted that the relationship between their two countries was no longer "without limits".
China is willing to work with Russia to play a leading role in demonstrating the responsibility of major powers, and to instill stability and positive energy into a world in turmoil.—Xi Jinping, 15 September 2022
Domestically, Xi's "zero COVID" policy was popular at first because it saved many lives. However, strict lockdowns have imposed hardship and even death on ordinary Chinese. Many cannot obtain food or medical care. At least 10 people died in a fire in Urumqi because COVID-related restrictions hampered rescue efforts. Such incidents have resulted in widespread demonstrations as well as calls for Xi to step down. Whether in response to the demonstrations or simply because lockdowns have not stopped the spread of the omicron variants, the Chinese government is easing restrictions.
China's "zero-covid" policy has relied on three mechanisms to contain outbreaks. The first is regular mass testing, which aims to find infected people fast. The second is centralised quarantine, to keep the infected and their close contacts away from the rest of the public. The third is lockdowns, to stamp out any spread of the disease. All these mechanisms are now being dismantled.—The Economist, 7 December 2022
However, this may not be enough to quell the most widespread dissent since 1989's Tiananmen Square demonstrations. China's vaccination program has been less effective than those of other nations, and its healthcare system may not be able to cope with mass infections. In addition, the dissent arises from more than just COVID lockdowns.
Since Mahsa Amini, a 22-year-old Kurdish woman arrested for violating the Islamic dress code, died in custody in mid-September, protests have erupted all over Iran. They take the forms of women cutting their hair or burning their hijabs, as well as strikes and demonstrations. The Iranian soccer team refused to sing their national anthem at the World Cup. At first the protests focused on women's rights, but they have begun to include calls for toppling the conservative Islamic government. Despite government control of the press and the internet, stories of beatings, torture, and sexual assault of protesters in detention have leaked out. As of early December, security forces have killed approximately 450 protesters and detained thousands. Executions have begun.
There have been conflicting statements from the Iranian government regarding the morality police. Iran's attorney general announced that it had been abolished; however, other officials have denied that. In any case, security forces enforce restrictions on social behavior. As in China, relaxing government controls may not be enough to silence calls for regime change.
Although other world events have pushed the COVID-19 pandemic out of the headlines, it is not over. The death toll in the United States passed 1,000,000 this year, and the number of deaths directly due to COVID is about 300 per day. These numbers do not fully account for the number of excess deaths since COVID first arose in late 2019. Even now, young, seemingly healthy people suddenly die due to stroke or heart failure. The death certificate may not list COVID among the causes, but the person would still be alive had it not been for COVID-related damage.
Vaccines are widely available and both Moderna and Pfizer have developed new versions for the omicron variants. However, most people—even the elderly, who are the most vulnerable—have not kept their vaccinations up to date. Once masks became optional, very few continued to wear them.
Here in Minnesota, nurses at hospitals in Minneapolis and Duluth have reached a tentative agreement, narrowly averting a potentially lengthy strike. Their main concern was understaffing, although pay was also a point of contention.
We continue to experience disruptions to supply chains. Seemingly random items suddenly become unavailable and then reappear on store shelves. The last time I brought my car in for an oil change, the mechanic told me that tires had become harder to find.
Justice Ketanji Brown Jackson joined the Supreme Court, the first Black woman and the first former public defender to do so. Most Supreme Court justices have served as prosecutors.
In Dobbs v. Jackson Women's Health Organization, the Supreme Court overturned its 1973 ruling in Roe v. Wade. The right to abortion thus became a matter for each state to determine. Other rights that rely on the same legal arguments as Roe, such as contraception, interracial marriage, and same-sex marriage, may also be at risk.
This decision was instrumental in limiting the "red wave" during the midterm elections. With the reelection of Raphael Warnock in Georgia, the Senate will have a narrow Democratic majority starting next month. Having lost their majority in the House, the Democrats will have difficulty passing legislation. However, they will be able to confirm judicial appointments for the remainder of President Biden's term in office.
The pandemic itself, the governments' response to it, and supply-chain disruptions due to COVID and Russia's invasion of Ukraine have all contributed to inflation. Once it became clear that it would not resolve on its own, the Federal Reserve began a series of interest rate increases. Pundits speculate about how severe and how long a recession will follow. We can only hope for a "soft landing" and prepare for a harder one.
It all fits together
None of these events occurs in isolation. Russia's invasion of Ukraine affects everything from the availability of wheat in Africa to the price of gas at the pump. High fuel prices will erode the resolve of NATO members to support Ukraine. Should Putin's invasion succeed, Xi Jinping's saber-rattling may threaten Taiwan as well.
On the other hand, protests in Russia, China, and Iran, while rooted in different causes, all threaten authoritarian regimes. Just how heavy-handed will these leaders be in quelling the protests? What will that mean for the stability of their respective governments?
We are being reminded every day that people are willing to risk all for the right to live in freedom, peace and dignity. I wouldn't underestimate the willingness of Russian, Iranian and Chinese regimes to respond brutally to the protests to hold onto power. But yes, I am optimistic. Time and history are not on the dictators' side…Dictators are subject to the same pressures to deliver as democratically elected leaders are. As you know from the Soviet Union, regimes can seem impervious to change—until they are not. I don't expect to see Xi Jinping in power in five years. China isn't suddenly going to turn into a democracy, but we shouldn't underestimate the power of dissent.—Michael J. Abramowitz, Freedom House
The older I get, the more relationships matter—especially with people I've known for decades. As travel restrictions have eased I've made a point of going to visit old friends in various places. Travel is more expensive and less convenient than it was three years ago, but it's worth it to me to be able to see friends in person.
Discussions of politics and religion have always been tricky, but these days they're even more fraught. It doesn't necessarily mean you can't talk about the events of the day, but it's important to keep in mind that relationships mean more than winning arguments.
Whichever holidays you celebrate, we hope you're able to spend time with the people who matter most to you. Take a cup of kindness yet for auld lang syne. And if you haven't gotten a flu shot or bivalent COVID booster yet, do it now.
Video: Nathan Evans sings "Auld Lang Syne".
Stay up to date and receive the latest news and articles by signing up for our newsletter.
Failure analysis
Mass Concrete


text:
Q: How do I add a custom view on click of a button Xamarin I am working on fragments and I need to show a custom layout on click of a button that contains a list view. This custom layout should be shown below that button.
Can anyone please suggest something for this.I have gone through almost all the links available for xamarin. We can do this in android using SetCustonView method but have no idea how to show it in C#

A: In my experience, there's a couple of things you can do:
1) You can put your ListView under your button but set its "Visibility" property to "Visibility.Gone." When the button is pressed you can set the Visibility prop to "Visibility.Visible."
View.FindViewById<Button>(Resource.Id.MyButton).Click += (object sender, System.EventArgs e) =>
                {
                    View.FindViewById<ListView>(Resource.Id.MyListView).Visibility = Android.Views.ViewStates.Visible;
                };

2) Another option is to put your ListView in a Fragment. When your button is clicked, you run a FragmentTransaction to add the Fragment to your View.
var fragTransaction = this.FragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, myFrag, "current_frag");
fragTransaction.Commit();

A: I got a better solution to achieve the above expection by using this
below is the code that I implemented
var buttonClick = FindViewById<Button>(Resource.Id.button);
PopupMenu menu = new PopupMenu(Activity, Resource.Id.button);
        menu.MenuInflater.Inflate(Resource.Menu.reports_nav_menu,                     menu.Menu);
        buttonClick .Click += (s, arg) => {
            menu.Show();
        };
        menu.MenuItemClick += (s1, arg1) => {
            DisplayMenuOptionsOnClick(s1, arg1);
        };

private void DisplayMenuOptionsOnClick(Object s1,PopupMenu.MenuItemClickEventArgs arg1) {
        switch (arg1.Item.TitleFormatted.ToString()) {
            case "Item 1":
                // Do Something
                break;
            case "Item 2":
                // Do Something
                break;
            case "Item 3":
                // Do Something
                break;

        }

    }

In your Resources -> create folder as 'menu'(if it is not there)
inside menu add xml file and add following code
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

  <item
      android:id="@+id/item_one"
      android:title="Item One"/>

  <item
      android:id="@+id/item_two"
      android:title="Item Two"/>

  <item
      android:id="@+id/item_three"
      android:title="Item Three"/>

</menu>

comment below for more clarification.

redpajama_set_name: RedPajamaStackExchange


Using a long shutter speed with your camera on a tripod, you can zoom the lens during the exposure to create an "explosion" of lines radiating from the center of the image. This technique works very well with lights at night or colorful subjects during the day.
Experiment with zooming "out" and "in" as the results can be very different. It also helps to "test" your zoom first to see what's included at the wide end of the zoom and what's left out at the narrow end. Then you can adjust either your camera position or your starting and ending lens zoom positions to fix any problems.
Learn this and other fun camera techniques in Creative Camera Techniques beginning October 2, 2018, in Missoula, Montana. Click here to register.


This 33,700 gallon (US) tank car is built to operate at a 263,000 lb gross rail load for the transportation of liquefied petroleum gas (LPG). The car is equipped with a 22 5/8-inch manway and an internal tank test pressure of 340 psi. Top fittings consist of 2- and 3-inch valves and pipes, a thermowell, a sample line, and a MGD. Various options for loading/unloading valve configurations are available depending on the service requirements. This tank has a stub sill top cover plate, a stub sill web and a stub sill bottom cover plate of ½ inch, 9/16 inch and ¾ inch 50 plate steel, respectively. We design our tank cars for durability and to safely transport your commodity to its destination.


text:
Celebrity and crime pay off big time for an American sociopath in Paris in "one of the great joys in new noir fiction" (Los Angeles Review of Books).
Dr. Crandall Taylor—or rather the actor who plays him—is enjoying a cushy new life in the City of the Lights where his now–cancelled American soap opera has become a prime time retro cult hit. This newfound stardom isn't wasted on him. Anxious to keep his brutal past a secret from fans, he's enjoying all the fruits that fame has to offer: adulation, entrée into the trendiest clubs, and sex. What he really wants is to fund a feature film.
Crandall uses his charm and intellect to draw into his narcissistic web four women: a horny network executive; an internet porn star; a bookish university student with a nasty bent; and the fetching starlet wife of an arms dealer. Crandall accepts both the crime lord's cash and his beautiful wife's advances. Big mistake. Now Crandall must channel his violent, megalomaniacal dark side just to stay alive—and on the run.
From the national bestselling author of The Ice Harvest comes "an ingeniously twisty old–school noir along the lines of James M. Cain" (Spinetingler Magazine). With it, the "mad, bad, and dangerous to know . . . quintessential American huckster . . . and in Phillip's sly, deft hands we find ourselves sinking down eagerly with him, glorying in the beautiful muck" (Edgar Award–winning author Megan Abbott).
Scott Phillips is the author of The Ice Harvest, The Walkaway, Cottonwood, The Adjustment, and Rake. He was born and raised in Wichita, Kansas and lived for many years in France. He now lives with his wife and daughter in St. Louis, MO.
Praise For This Book
Praise for Rake
"Rake is one of the great joys in new noir fiction and should find itself on many year–end lists with recent efforts from Richard Lange, Daniel Woodrell, Sara Gran, and Ace Atkins. . .It's breezy and twisted fun, a sinister book to savor in a poorly lit dive bar while all your boring relatives are curled up on their sofas with mainstream fluff. . .Phillips's work is much more in line with masters like Jim Thompson and Charles Willeford, in that he is unafraid to tell the stories of gritty narcissists who turn dark corners and wind up blazing a savage trail through the world. . ..Donald Westlake's great Dortmunder novels come to mind as antecedents; Phillips, like Westlake, is fond of running gags and has the ability to transform the criminal underworld into a deliciously zany place. But Willeford's The Woman Chaser seems like Rake's closest relative. Phillips, delivering a study in misanthropic madness, takes all of his cues from Willeford, who — better than anyone — examined the troubled minds of the soulless." —William Boyle, Los Angeles Review of Books
"With Rake, Scott Phillips proves himself the unparalleled master of the noir anti–hero. Mad, bad, and dangerous to know, his Crandall Taylor is the quintessential American huckster on the scene, and in Phillip's sly, deft hands we find ourselves sinking down eagerly with him, glorying in the beautiful muck." —Megan Abbott
"Scott Phillips is an author whose books are always at the top of my reading pile. His smart prose and conscience–deprived anti–heroes turn crime fiction into social satire. His latest, Rake, further proves his talent for making noir funny. . .With Rake, Phillips has once again created a protagonist whose voice suits his writing style. You might dislike him, if he wasn't so cavalier and intelligent. While he gives us wild justification for his actions there exists a little hypocrisy in him, at least when he tells his tale. It's also hard to admit we'd behave differently if we could get away with it. One could say that Scott Phillips gives us a cold look at his characters, and the film business, but the narration and the protagonist's devil–may–care attitude give Rake a sleazy warmth. Rake is Scott Phillips at his most entertaining. His wonderfully amoral and hedonistic characters, with their scheming and trouble shooting, provide a subtle yet laughable loud look at how the U.S. has exported its worst traits abroad."— Mystery People
"The first scene in Rake is a fight. It's not surprising that a Scott Phillips book opens with violence; he's known for exploring the baser side of humanity with dark humor and noirish style. . .Rake makes no bones about its main character being a bad guy. But bad guys can make for good reads, and this one does." —The Wichita Eagle
"Rake is full of vicarious pleasures for us to indulge in...from one of the most original practitioners of noir working today..a hilarious Hollywood satire, the fuck–journal of a mad man and an ingeniously twisty old–school noir along the lines of James M. Cain." —Spinetingler Magazine


http://de.php.net/manual/howto/translation-practical.html states that build.log.gz should be available at "http://www.php.net/de/blog". This resolves to http://de3.php.net/manual/de/build.log.gz and gives a HTTP 404 Error.
The build logs are not available for quite some time now. Derick?
They are made... perhaps put a different location. I'll check.


text:
Vinyl Archives: Week of September 29th
Featuring Depeche Mode, The Ramones, and more!
By chelsea brimstin Features & Lists, Vinyl Archives 04.10.2019
Join us on a journey through the gigantic vinyl archive each weekday on-air at 9:45 a.m. & 3:45 p.m. If you miss an episode, you can catch them on Facebook and Twitter at 9 p.m. each weeknight, or on Indie88.com.
Presented with
Depeche Mode – "People Are People"
Jeremy Deller and Nick Abarham's documentary Our Hobby Is Depeche Mode has finally been made available online. The flick, which was originally released back in 2006, had never been made available outside of occasional film screenings. Our Hobby Is Depeche Mode follows a group of Depeche Mode fans, analyzing the connection they feel with the group, and how the band provided a connection to western pop for Eastern Europeans living under a Communist dictatorship.
Ramones – "Blitzkrieg Bop"
The Ramones have released an unboxing video for their recently released deluxe 40th anniversary reissue of 1979's It's Alive. The 4CD/2LP box set features the Ramones' New Year's Eve 1977 show at the Rainbow Theatre in London in addition to three unreleased concerts of the same week.
R.E.M. – "Orange Crush"
R.E.M.'s Michael Stipe has announced a debut solo single titled "Your Capricious Soul," which is set for release this weekend. This marks Stipe's first new music since R.E.M. broke up eight years ago. "For five years I'd had a clean break from music," Stipe explains. "Now I'm writing, composing and recording all by myself and for the first time."
The Replacements – "I Will Dare"
The Replacements have given Don't Tell a Soul a second life with a new box set called Dead Man's Pop. The new four-disc reissue is an expanded edition of their renowned 1989 album, all served up with a new mix of the original tracks.
Iggy Pop – "Lust For Life"
Iggy Pop has released a new intimate video for "Loves Missing" off of his recently released album Free. The new Simon Taylor-directed video is quite minimal for Pop, as he performs in a black room with a singular bright light. The shots of Pop performing the gritty, melancholic track comes interspersed with hazy clips of a woman browsing through records at Sweat Records shop in Miami and analyzing a gem that refracts light.
Tags: Vinyl Archives


text:
Medindia » Medico Legal News
Amanda Knox Appears In Court To Face Slander Charges
by Gopalan on June 2, 2010 at 8:26 AM
Foxy Knoxy is in for more trouble. The seductive US student has already been sentenced to 26 years over the killing of British student Meredith Kercher. She is now being tried on charges of slandering the Italian police.
During the Kercher murder trial, the 22-year-old Knox had accused police of physically assaulting her and bullying her into a false confession to the murder.
She demonstrated to the court last June how a woman police officer had twice hit her around the head and called her a "stupid liar".
"She was saying 'Come on, come on, remember' and then - slap - she hit me. Then 'come on, come on' and - slap - another one."
Italian police strenuously denied that Knox was subjected to any physical abuse.
Knox's lawyer, Luciano Ghirga, argued that it was inappropriate for the slander charge to be heard by judge Claudia Matteini, because she had been involved in one of the preliminary hearings into the Kercher murder.
The case on Tuesday was adjourned until June 17, when another judge is likely to be assigned to the case.
The trial is likely to start on October 1. If Knox is found guilty of slander, she could face another six years in jail.
Her appeal against the 26-year-term in the murder case is also expected to start in the autumn, meaning that the two cases could run concurrently.
Knox's Italian boyfriend, computer studies graduate Raffaele Sollecito, and Rudy Guede, a drifter who was born in Ivory Coast but moved to Italy as a child, were also found guilty of Miss Kercher's murder.
The Leeds University student was found stabbed to death in the house she shared with Knox and two Italian women on the morning of Nov 2, 2007.
She had deep slash wounds to her neck and lay half-naked in a pool of her own blood. It was the culmination of drug-fuelled sex game, prosecution said. Knox, Sollecito and Guede have all pleaded not guilty.
Nervous Tic
Trigeminal Neuralgia or tic douloureux is one of the most painful nervous system disorders that affect the ...
Amanda Knox Appears In Court To Face Slander Charges Personalised Printable Document (PDF)


Bring your tools! Let's build!
Bring your tools, any scrap materials (wood, metal, paint, crafts, etc) and maybe a beverage or two! Help us build some kid friendly games for our upcoming Family Fun Fair! The Fair will take place August 29th in Somba K'e Civic Plaza.
All are welcome, especially those that are handy. Feel free to bring down some designs for your favourite family or carnival themed games.


text:
class PasswordGenerationManager;
class PasswordManager;

namespace autofill {
class AutofillManager;
struct PasswordForm;
struct PasswordFormFillData;
}  // namespace autofill

// Interface that allows PasswordManager core code to interact with its driver
// (i.e., obtain information from it and give information to it).
class PasswordManagerDriver {
 public:
  PasswordManagerDriver() {}
  virtual ~PasswordManagerDriver() {}

  // Fills forms matching |form_data|.
  virtual void FillPasswordForm(
      const autofill::PasswordFormFillData& form_data) = 0;

  // Returns whether any SSL certificate errors were encountered as a result of
  // the last page load.
  virtual bool DidLastPageLoadEncounterSSLErrors() = 0;

  // If this browsing session should not be persisted.
  virtual bool IsOffTheRecord() = 0;

  // Returns the PasswordGenerationManager associated with this instance.
  virtual PasswordGenerationManager* GetPasswordGenerationManager() = 0;

  // Returns the PasswordManager associated with this instance.
  virtual PasswordManager* GetPasswordManager() = 0;

  // Returns the AutofillManager associated with this instance.
  virtual autofill::AutofillManager* GetAutofillManager() = 0;

  // Informs the driver that |form| can be used for password generation.
  virtual void AllowPasswordGenerationForForm(autofill::PasswordForm* form) = 0;

 private:
  DISALLOW_COPY_AND_ASSIGN(PasswordManagerDriver);
};

#endif // TIZEN_AUTOFILL_SUPPORT

#endif  // PASSWORD_MANAGER_DRIVER_H

redpajama_set_name: RedPajamaGithub


Johnny Loves Rosie Monochrome Flower Brooch.
As seen on the catwalks, follow the trend of embellished broaches. The perfect accessory to transform your workday wear or lend a touch of sparkle to your wedding outfit.


When you've done canine freestyle as long as Kris Hurley of Oklahoma, you're bound to have some funny stories. Most of them involve her seven-year-old Pug/Dachshund mix, Roxie, and her obsession with food.
Canine freestyle is choreographed trick training set to music. You'll recognize some traditional obedience moves, such as heel position, but the overall goal is to get creative and put your dog's best paw forward. Fans of the sport love the freedom of choosing their own music, designing a routine based on their dog's strengths and using verbal encouragement during a performance.
Joan Tennille, president and co-founder of the Canine Freestyle Federation (CFF), claims she defined canine freestyle as a competitive sport rather than as just entertainment. In 1993, four dog trainers approached Tennille, at the time, a professional dancer-choreographer, to help them create what would be the first canine freestyle demo. They wanted to showcase their dogs' advanced obedience training by setting it to music and treating human and dog as equal partners. They showed her a video of a demonstration by a now-defunct Canadian organization.
Aside from the challenge of giving the dog equal stage presence, Tennille had to think about movement and flow. Four-footed dogs move very differently from two-footed people. Plus, a Border Collie is going to be more agile and light on his feet than a Bloodhound.
In 1999, the World Canine Freestyle Organization (WCFO) made its debut and began offering worldwide competitions the following year. Two specialized divisions include "Sassy Seniors," devoted to dogs over nine years old and/or handlers over 65 years, and "Handi-Dandi Dancers," for the "creatively challenged" teams.
The Musical Dog Sport Association (MDSA) is a young organization, founded in 2002. Its website is a treasure trove for beginners, featuring resources such as a comprehensive (and ever-evolving) list of canine freestyle moves and advice on how to find a good freestyle trainer. MDSA also recognizes freestyle teams that perform at hospitals, schools and nursing homes through its Spirit of Sharing (SOS) program. Since freestyle classes are not yet available in some areas, its Circle of Friends program encourages members to meet and train with freestylers in their area.
Each organization promotes its own style and hallmarks of competition. Or, in the case of MDSA, the organization is so new that it's still putting together titling competitions. In general, as you progress from one level to another, you're required to perform longer, more challenging routines. Unlike dogs in many other sports, freestyle dogs must focus on their partner for a minimum of 90 seconds, and up to three minutes at the most advanced levels. The key is positive training using motivational methods.
Although most of the top competition dogs are Border Collies and Golden Retrievers, all breeds and mixes are welcome to participate, no matter the organization. Karen Lewis of New Mexico competes in WCFO and MDFA with her six-year-old Staffordshire Bull Terrier, Bryce. He earned his AKC conformation championship and also competes in agility.


The romantic setting and timeless elegance of Irnham Hall located between Stamford and Grantham in South Lincolnshire is the perfect backdrop for your wedding day. Irnham Hall is the stunning and set within beautiful gardens and extensive grounds. The fabulous Summer House and Walled garden can be rented exclusively for your big day. We can offer you a Civil ceremony in our Orangery which boast floor to ceiling windows. We are modern and fresh in the backdrop of historical elegance. The Stunning Church of St Andrews in the grounds could also host your wedding ceremony. There is ample accommodation near by in the local pub or in the form of luxury cottages. We allow you to choose from one of our approved caterers to tailor your day as you wish but would suggest the following timings to allow your day to flow. 1:30 pm	Guests arrive at Irnham Hall prior to the ceremony 2:00 pm Ceremony begins 2:30 pm Ceremony ends followed by reception drinks and photographs 4:30pm	The wedding breakfast is announced in the Summer House 5:00 pm	The Bride and Groom are announced into the room and the wedding breakfast is served 7:00 pm	Cutting of the cake and speeches 7:30 pm Evening guests start to arrive 8:00 pm	First Dance 9:45 pm Evening food may be served 11:30 pm Last Dance and prepare to leave. Midnight - all end. Cars can be left in the car park over night and collected the following morning. We have an enormous bar in the venue which offers great value day and night drinks packages. Call us to find out more!
gosh - all our weddings have been different and magical but as we get to know our couples personally we enjoy being part of your day as much as you enjoy it !
we are very relaxed and we love fairy lights.. so if you want to have a relaxed day with twinkly magic , Irnham may just be the place for you !
We cannot tell you as that would be naughty !!
Gluten free blini with beetroot and goats cheese ! - weird but it is so good !
Everyone under one roof so the party feels intimate and everyone is involved.. even granny !


There are various airports that operate within Turks and Caicos. South Caicos Intl Airport (XSC) is one of Turks and Caicos's primary airports with at least domestic flights and international flights departing from its runways every week. As of today, South Caicos Intl Airport (XSC) offers nonstop flights to cities and has airlines operating out of it.
Some of Turks and Caicos's other primary airports include; Grand Turk Island Airport (GDT), offering nonstop flights to cities, with airlines operating out of it on at least domestic flights and international flights each week. Salt Cay Airport (SLX) features nonstop flights to cities and has airlines operating out of it on at least domestic flights and international flights each week.


text:
Q: Error in a method prototype I'm running into this error from Xcode while I'm utilizing a delegate method to close the screen on my program. The error looks like this:

Expected ';' after method prototype

Where the delegate method looks like this:
#pragma mark - PlayerDetailsViewControllerDelegate

- (void)playerDetailsViewControllerDidCancel:(PlayerDetailsViewController *)controller
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

However, this method right below it is perfectly content without the semicolon.
- (void)playerDetailsViewControllerDidSave:(PlayerDetailsViewController *)controller
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

In examining my code, I'm not quite sure where I should start in looking for fixing this error. Is there a difference between the two that I need to be cognizant of when I declare them, or do I have a problem somewhere else in my program?
Here is the rest of the PlayerDetailsViewController.h file:
    #import <UIKit/UIKit.h>
#import "PlayerDetailsViewController.h"

@class PlayerDetailsViewController;

@protocol PlayerDetailsViewControllerDelegate <NSObject>
- (void)playerDetailsViewControllerDidCancel:
(PlayerDetailsViewController *)controller;
- (void)playerDetailsViewControllerDidSave:
(PlayerDetailsViewController *) controller;

@end

@interface PlayerDetailsViewController : UITableViewController

@property (nonatomic, weak) id <PlayerDetailsViewControllerDelegate> delegate;

- (IBAction)cancel:(id)sender;
- (IBAction)done:(id)sender;

#pragma mark - PlayerDetailsViewControllerDelegate

- (void)playerDetailsViewControllerDidCancel:(PlayerDetailsViewController *)controller
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

- (void)playerDetailsViewControllerDidSave:(PlayerDetailsViewController *)controller
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end

If this code looks familiar, that's because it is. I'm working through the Ray Wenderlich tutorials here.
I looked for an answer to this question in the apple documentation but neither article really helped answer my question, or at least help me to understand my problem.
Where should I start searching for my problem?
P.S. Sorry, I tried to post two links to the apple articles but I have to have 10 reputation to post more than one link. You probably remember those days, if vaguely ;)

A: Xcode will show you which line the error is on. Double click the error and that should get you to the problem.

A: The problem in your header is here:
#pragma mark - PlayerDetailsViewControllerDelegate

- (void)playerDetailsViewControllerDidCancel:(PlayerDetailsViewController *)controller
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

- (void)playerDetailsViewControllerDidSave:(PlayerDetailsViewController *)controller
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

You have put your implementation of those methods in the header file!
A header file declares the public method prototypes for a class - those aren't prototypes, those are your delegate method implementations. The prototypes your already declared in the protocol declaration.


text:
Lavanderia Vecchia: A taste of Rome in Berlin
Lavanderia Vecchia is hidden in the "hinterhaus" of a building in Berlin's Flughafenstrasse – a location where one would never imagine stumbling upon such a charming and unique dining spot. The decor, thought through with taste and heart, creates the kind of intimate atmosphere where one feels special yet at ease. However, what really makes Lavanderia Vecchia outstanding is the fare and the service of the Hoffmanns, the restaurant's atypical owners, who go the extra yard to share an authentic and sincere moment with their guests. I sat down with Mr. Hoffmann to talk about his vision.
NDT: Why did you decide to open your restaurant in Neukölln?
LV: We both are real "Neuköllners" – my wife was born in this neighborhood and I have been living here for over ten years. For us, it is home and it was natural to open a restaurant near to where we live.
NDT: What is your connection to Italy?
LV: I worked for many years in Italy and we owned a little house in a village near the Sabina region, north east of Rome. It is a famous area; according to legend, ancient Romans abducted Sabine women in order to populate their newly built city. The restaurant's oil and wines are directly imported from our producer friends there.
NDT: Lavanderia Vecchia opened just last April. Not even a year later, one has to book a minimum of three weeks in advance to reserve a table on weekends. What do you think is the key to the success of your restaurant and what kind of public comes here?
LV: I don't think the success is due to the location only. We have a very mixed group of guests, ranging from students from the neighborhood who bring their parents, to artists, to tourists. We're able to receive about forty guests per night.
LV: A typical evening is the following: there is one single menu for everybody and it's served at the same time. Therefore it is important that the guests arrive on time. The menu consists of ten antipasti, a primo plato, a secundo plato and a dessert. Then the guests are invited to the bar where we serve coffees and digestives. The evening lasts generally from 7:45pm to 11pm. We change the menu each week.
LV: We are also open for lunch and serve soups, salads and pasta. People coming at this time are mostly those who work around here. We are not purists; the idea is of Italian inspiration and I like to keep a local atmosphere.
NDT: How did you discover this factory-like location? Where does the decor's "laundry"theme come from?
LV: We own this place and had been renting it out for many years to a professional laundry service that specialized in cleaning restaurant linens. When they moved out to expand, my wife said to me that she wanted to take over the place and start a restaurant. At that time, I was unemployed and she was working as a caretaker. I thought it was an exciting project and so we started planning. The decoration idea is also from my wife. She recycled the concept of a laundry and most of what you see here comes from local flea markets.
NDT: I was seduced by this new interpretation of Italy and could not refuse the 9th antipasto, even while wondering how to possibly take it all in.
An article by Maud Piquion
Pratt Institute: Put Your Money Where Your Art Is
Little Paradise for Your Vacation
The Sails of Saint Tropez
Du Other Articles By This Contributor
Minimalist Architecture: Less is More
Ceramic Wood Stoves
US 19th Century
Linenss
Art of the Table
© 2015 - New Design Times Terms of Use Privacy Policy Contact


Jean-Jacques Barre was apprenticed to the French Empire medalist Nicolas Tiolier at the age of seventeen. He made such rapid progress in the master's studio that his work was accepted at the Salon of 1819, where it met with great success. From this period on until his death in 1855, Barre scarcely missed a year of Salon exhibitions. The number of his medals and numismatic engravings are almost impossible to recount.
The subject of this medal, Firmin Didot, was born into a family of printers in 1764. His specialty was fine printing, and he worked with many fine artists and designers of his day. Napoleon I appointed Didot the director of the Imprimerie Royale in 1801.
This medallic portrait of Didot was taken from a drawing by Anne-Louis Girodet, which is now in the Musée du Louvre. Firmin Didot edited many of Girodet's drawings made as illustrations for great works of literature.


10.00am - Mother's Union meeting at church gates to attend flower festival in St. Theresa''s Church, Clarendon Street.
5.00pm - Annual Diocesan Healing Service, St. Patrick's, Enniskerry.
8.00pm -Safeguarding Trust refresher for workers and panel members in Delgany.
4.00pm - Diocesan Synod, Holy Communion Service at 4pm including the Archbishop's Synod address followed by the Synod in Taney.
Sunday 26th October - Clocks Go back an hour !
10.30am - Parish Coffee morning, come along for a coffee and a chat, Small Hall, all welcome!


GRUSOM S/T debut album set to be released on Vinyl via Kozmik Artifactz – on pre-sale now.
With dark and gloomy lyrics, GRUSOM creates an honest and unpolished universe that questions life and death through authentic stories and malicious tales.
It started out in a small room, in a small town, in a small country. Three guys with the urge to play rock 'n' roll and let their hair hang loose. The band, formed in late 2013, began with only a guitar, drums and vocals. Knowing they needed more, the guys called a few friends, luring them into this idea. That became as easily done as said and within a week had the crew assembled: two guitars, bass, drums, organ and vocals. And so became GRUSOM!
The band released its first DIY demo on bandcamp late in the summer of 2014 and received a lot of unexpected attention, which really lit a fire beneath the young guys' feet. Towards the end of 2014 the band recorded some more tracks to complete their stunning full length debut.
GRUSOM consist of Nicolaj Hoffmann Jul – vocals, Peter Pørtner – keys, Jakob Kaae – drums, Dennis Warburg – guitar, Thomas Ulrik – guitar and Søren Olesen – bass.